<?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");
?>
伊谢尔伦2017-04-10 15:04:14
需要吐槽的地方太多:
其实有比scandir()
更好用一点的遍历函数,那就是 glob,起码两个array_shift()
和一个记录前缀的$str
就完全不用了。
ms_sc()
函数都没有return
值,我并不觉得能echo
出所有的子目录,起码我没看出来,可能我眼拙了吧。
这个是最值得吐槽的了,那个explode
是怎么回事,要有多丑就有多丑,看着这样的代码简直愁死了。
最后建议多看看手册,手册上已经有很多写的很好的代码了,比如用scandir()
的这个代码写的就比你漂亮多了,然后这个代码就是用glob()
的直接就比上一个代码少了一步,把这个代码浓缩精简恶趣味一下就是:
function r($d) {
foreach(glob("$d/*") as $f) is_dir($f) ? r($f) : unlink($f);
return rmdir($d);
}
PHP中文网2017-04-10 15:04:14
首先你先别怪没人给你回答,没人回答是应该的(除了我正好现在闲的蛋疼。。)
if(is_dir($d))
就是过滤出目录,还不明白就去搞清楚递归慢慢来,啥东西都是从无到有