一段php代码,程序能运行,但同学说我代码有问题,求大神指点一下
<code><?php function mc_sc($a) { //这是一个删除目录的函数,$a是要删除的目录路径 $b = scandir($a); array_shift($b); array_shift($b); $str = $a; foreach ($b as $c) { $d = $a . "/" . $c; if (is_dir($d)) { $str.= "," . mc_sc($d); //这里我最后echo了一下$str,得到的是所有$a下的所有子目录路径,我不知道为什么,求大神指点一下。 } else { unlink($d); } } $e = explode(",", $str); $f = array_reverse($e); foreach ($f as $g) { rmdir($g); } } mc_sc("D:/wamp/www/css"); ?> </code>
回复内容:
<code><?php function mc_sc($a) { //这是一个删除目录的函数,$a是要删除的目录路径 $b = scandir($a); array_shift($b); array_shift($b); $str = $a; foreach ($b as $c) { $d = $a . "/" . $c; if (is_dir($d)) { $str.= "," . mc_sc($d); //这里我最后echo了一下$str,得到的是所有$a下的所有子目录路径,我不知道为什么,求大神指点一下。 } else { unlink($d); } } $e = explode(",", $str); $f = array_reverse($e); foreach ($f as $g) { rmdir($g); } } mc_sc("D:/wamp/www/css"); ?> </code>
需要吐槽的地方太多:
其实有比
scandir()
更好用一点的遍历函数,那就是 glob,起码两个array_shift()
和一个记录前缀的$str
就完全不用了。ms_sc()
函数都没有return
值,我并不觉得能echo
出所有的子目录,起码我没看出来,可能我眼拙了吧。这个是最值得吐槽的了,那个
explode
是怎么回事,要有多丑就有多丑,看着这样的代码简直愁死了。
最后建议多看看手册,手册上已经有很多写的很好的代码了,比如用scandir()
的这个代码写的就比你漂亮多了,然后这个代码就是用glob()
的直接就比上一个代码少了一步,把这个代码浓缩精简恶趣味一下就是:
<code>function r($d) { foreach(glob("$d/*") as $f) is_dir($f) ? r($f) : unlink($f); return rmdir($d); } </code>
首先你先别怪没人给你回答,没人回答是应该的(除了我正好现在闲的蛋疼。。)
- 别的不说,变量名都是a、b、c、d是怎么个情况。。变量名要有意义,起码看起来方便
- 得到所有子目录路径是应该的,外层的
if(is_dir($d))
就是过滤出目录,还不明白就去搞清楚递归 - 最后我很想问一句,你写的这段程序你真的能理解么?(里面的函数都是干什么用的?两个foreach循环分别是干什么的?为什么不先删目录,然后删文件?)
慢慢来,啥东西都是从无到有

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

登录 CakePHP 是一项非常简单的任务。您只需使用一项功能即可。您可以记录任何后台进程(如 cronjob)的错误、异常、用户活动、用户采取的操作。在 CakePHP 中记录数据很容易。提供了 log() 函数

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写
