php 递归函数中的计数器
counter in a php recursive function
我已经通过系统查看了问题,但找不到问题的答案。我想在 php 递归函数中尝试一个计数器,它查找并删除空文件夹。我在下面粘贴了一种将非空值回显为“–”并将空值回显为“|”的方法。毕竟它看起来还不错,但万一有很多东西要清除,它就会在屏幕上变成乱码。相反,我想查看已检查和已删除的文件夹数量。到目前为止,这里也是使用 Whosebug 编译的代码。有什么帮助吗?
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;
}
只需传递变量作为参考:
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");
你也可以使用全局变量,但这非常丑陋,每次你使用一个不同于标准变量的全局变量,一只小猫死了。
面向对象变体:
将所有内容放入 class 并添加实例属性 $checked
和 $deleted
,然后使用自制程序或(讨厌的代码)仅使用 += 1
增加它们或 $var ++
.
我已经通过系统查看了问题,但找不到问题的答案。我想在 php 递归函数中尝试一个计数器,它查找并删除空文件夹。我在下面粘贴了一种将非空值回显为“–”并将空值回显为“|”的方法。毕竟它看起来还不错,但万一有很多东西要清除,它就会在屏幕上变成乱码。相反,我想查看已检查和已删除的文件夹数量。到目前为止,这里也是使用 Whosebug 编译的代码。有什么帮助吗?
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;
}
只需传递变量作为参考:
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");
你也可以使用全局变量,但这非常丑陋,每次你使用一个不同于标准变量的全局变量,一只小猫死了。
面向对象变体:
将所有内容放入 class 并添加实例属性 $checked
和 $deleted
,然后使用自制程序或(讨厌的代码)仅使用 += 1
增加它们或 $var ++
.