【发布时间】:2010-12-22 10:55:50
【问题描述】:
我正在开发一个 PHP 函数,该函数将递归删除所有从给定绝对路径开始不包含文件的子文件夹。
这是目前开发的代码:
function RemoveEmptySubFolders($starting_from_path) {
// Returns true if the folder contains no files
function IsEmptyFolder($folder) {
return (count(array_diff(glob($folder.DIRECTORY_SEPARATOR."*"), Array(".", ".."))) == 0);
}
// Cycles thorugh the subfolders of $from_path and
// returns true if at least one empty folder has been removed
function DoRemoveEmptyFolders($from_path) {
if(IsEmptyFolder($from_path)) {
rmdir($from_path);
return true;
}
else {
$Dirs = glob($from_path.DIRECTORY_SEPARATOR."*", GLOB_ONLYDIR);
$ret = false;
foreach($Dirs as $path) {
$res = DoRemoveEmptyFolders($path);
$ret = $ret ? $ret : $res;
}
return $ret;
}
}
while (DoRemoveEmptyFolders($starting_from_path)) {}
}
根据我的测试,这个函数可以工作,尽管我很高兴看到任何可以提高代码性能的想法。
【问题讨论】:
-
@Ben - 来自 TS - '我很高兴看到任何关于性能更好的代码的想法。'
-
最好在refactormycode.com 发帖?