本帖最后由 maniachhz 于 2012-11-17 11:40:04 编辑

解决方案 »

  1.   

    逻辑上你没理清除思路:
    if ($f !=="." && $f !==".." && is_dir($f)){
         // 假设进入这一分支,想想看会产生什么影响? 这句代码不会影响到最后的结果。
         isEmptyDir($f);
         // return isEmptyDir($f);
    }
      

  2.   

    function isEmptyDir( $path )
    {
        $dh= opendir($path.'/');
        $r = false;
        while(false!==($f=readdir($dh)))
        {
            if ($f =="." || $f =="..") continue;
            $f = "$path/$f";
            if(is_dir($f)){
                $r = isEmptyDir($f);
            }
            else $r = true;
        }
        closedir($dh);
        return $r;
    }
      

  3.   

    斑竹的代码perfect
    我修改了我上面写的函数.还是运行不对.不知道哪里出问题
    /*
     * 遍历目录,如果为空返回false
     */
    function isEmptyDir( $path )
    {
    $dh= opendir($path.'/');
    $r = false;
    while(false!==($f=readdir($dh)))
    {
    $subdir = $path.'/'.$f;
    if ($f !=="." && $f !==".." && is_dir($subdir)){
    isEmptyDir($subdir);
    }
    else if ($f !=="." && $f !== ".."){
    $r = true;
    break;
    }
    }
    closedir($dh);
    return $r;
    }
      

  4.   

    斑竹的代码perfect
    我修改了我上面写的函数.还是运行不对.不知道哪里出问题
    /*
     * 遍历目录,如果为空返回false
     */
    function isEmptyDir( $path )
    {
    $dh= opendir($path.'/');
    $r = false;
    while(false!==($f=readdir($dh)))
    {
    $subdir = $path.'/'.$f;
    if ($f !=="." && $f !==".." && is_dir($subdir)){
    isEmptyDir($subdir);
    }
    else if ($f !=="." && $f !== ".."){
    $r = true;
    break;
    }
    }
    closedir($dh);
    return $r;
    }
      

  5.   


     if ($f !=="." && $f !==".." && is_dir($subdir)){
                isEmptyDir($subdir);//改成$r = isEmptyDir($subdir);
            }