我已经查看了系统已经存在的问题,但无法找到问题的答案。我想在php递归函数中尝试一个计数器,它会查找并删除空文件夹。我在下面粘贴了一种回声非空的方式,因为" - "并清空" |"。毕竟它看起来还不错,但是如果要清除很多东西,那么屏幕上的一切都会变成乱码。相反,我希望查看已删除的文件夹数量。这是迄今为止使用StackOverflow编译的代码。有任何帮助吗?
function RemoveEmptySubFolders($path) {
echo "–";
$empty = true;
foreach ( glob ( $path . DIRECTORY_SEPARATOR . "*" ) as $file ) {
if (is_dir ( $file )) {
if (! RemoveEmptySubFolders ( $file ))
$empty = false;
} else {
$empty = false;
}
}
if ($empty) {
if (is_dir ( $path )) {
// echo "Removing $path...<br>";
rmdir ( $path );
echo "|";
}
}
return $empty;
}
答案 0 :(得分:4)
只需将变量作为参考传递:
function recursive($path, &$directories, &$removed) {
echo "-";
$directories ++;
$empty = true;
foreach ( glob ( $path . DIRECTORY_SEPARATOR . "*" ) as $file ) {
if (is_dir ( $file )) {
if (! recursive ( $file, $directories, $removed ))
$empty = false;
} else {
$empty = false;
}
}
if ($empty) {
if (is_dir ( $path )) {
$removed++;
echo "|";
}
}
return $empty;
}
$path = "c:\exampledir";
$directories = 0;
$removed = 0;
recursive($path, $directories, $removed);
echo("<br>$directories, $removed");
你也可以使用全局变量,但这非常难看,每当你使用全局变量而不是标准变量时,小猫就会死掉。
答案 1 :(得分:0)
面向对象变体:
将所有内容放入一个类中并添加实例属性$checked
和$deleted
,然后使用自制程序或(讨厌的代码)使用+= 1
或$var ++
递增它们