对于数组的第三个元素,is_file函数始终返回false

时间:2018-11-25 10:09:20

标签: php file

这是一个简单的PHP函数,用于清除目录中的所有空文件夹。

但是,即使它是文件,它也总是将数组的第三个元素作为目录。

function myfunction($s){
    echo "<br>Now the directory is $s";
    echo "<br>";
    if (is_file($s)) {
        echo "$s is a file <br>";
        return;
    }
    else {
        echo "$s is a directory";
        chdir($s);
        $d = scandir(".");
        echo "<br> Array elements are ". print_r($d) . "<br>";
        echo sizeof($d);
        for ($i= 2; $i <sizeof($d); $i++) {
            $a = $d[$i];
            echo "<br>Now the folder is $a <br>";
            echo "<br>";
            if (empty($a)) {
                rmdir($a);
            }
            else{
                myfunction($a);
                chdir("..");
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

函数empty()不会测试目录内容是否为空,只有在变量的值为空时才进行测试。您的变量$a包含当前迭代的文件名,因此您正在测试文件是否具有文件名。那将永远不会发生,因此您总是通过递归调用执行分支。

您基本上需要计算目录scandir()返回的条目数。如果conut为2,则目录为空,可以删除。