这是一个简单的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("..");
}
}
}
}
答案 0 :(得分:0)
函数empty()
不会测试目录内容是否为空,只有在变量的值为空时才进行测试。您的变量$a
包含当前迭代的文件名,因此您正在测试文件是否具有文件名。那将永远不会发生,因此您总是通过递归调用执行分支。
您基本上需要计算目录scandir()
返回的条目数。如果conut为2
,则目录为空,可以删除。