簡體   English   中英

計數器在PHP遞歸函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM