![](/img/trans.png)
[英]PHP: counter variable in recursive function counts down before returning “1”
[英]counter in a php recursive function
我已經查看了系統中已經存在的問題,但是找不到我的問題的答案。 我想在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;
}
只需傳遞變量作為參考:
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");
您也可以使用全局變量,但這非常丑陋,每次使用全局變量而不是標准變量時,小貓都會死亡。
面向對象的變體:
將所有內容放入一個類中,並添加實例屬性$checked
和$deleted
,然后使用自制過程或(討厭的代碼)僅通過+= 1
或$var ++
對其進行遞增。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.