一段php代码,程序能运行,但同学说我代码有问题,求大神指点一下

WBOY
풀어 주다: 2016-06-06 20:42:24
원래의
989명이 탐색했습니다.

<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>
로그인 후 복사
로그인 후 복사

需要吐槽的地方太多:

  1. 其实有比scandir()更好用一点的遍历函数,那就是 glob,起码两个array_shift()和一个记录前缀的$str就完全不用了。

  2. ms_sc()函数都没有return值,我并不觉得能echo出所有的子目录,起码我没看出来,可能我眼拙了吧。

  3. 这个是最值得吐槽的了,那个explode是怎么回事,要有多丑就有多丑,看着这样的代码简直愁死了。

最后建议多看看手册,手册上已经有很多写的很好的代码了,比如用scandir()的这个代码写的就比你漂亮多了,然后这个代码就是用glob()的直接就比上一个代码少了一步,把这个代码浓缩精简恶趣味一下就是:

<code>function r($d) {
    foreach(glob("$d/*") as $f) is_dir($f) ? r($f) : unlink($f);
    return rmdir($d);
}
</code>
로그인 후 복사

首先你先别怪没人给你回答,没人回答是应该的(除了我正好现在闲的蛋疼。。)

  1. 别的不说,变量名都是a、b、c、d是怎么个情况。。变量名要有意义,起码看起来方便
  2. 得到所有子目录路径是应该的,外层的if(is_dir($d))就是过滤出目录,还不明白就去搞清楚递归
  3. 最后我很想问一句,你写的这段程序你真的能理解么?(里面的函数都是干什么用的?两个foreach循环分别是干什么的?为什么不先删目录,然后删文件?)

慢慢来,啥东西都是从无到有

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!