PHP递归函数中的计数器



我已经通过系统查看了问题,但无法找到我问题的答案。我想在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 ++来增加它们

最新更新