【发布时间】:2018-03-11 06:11:04
【问题描述】:
您好,我正在尝试迭代以下函数。它浏览所有目录并给我那里的所有文件。
function getFilesFromDirectory($directory, &$results = array()){
$files = scandir($directory);
foreach($files as $key => $value){
$path = realpath($directory.DIRECTORY_SEPARATOR.$value);
if(!is_dir($path)) {
$results[] = $path;
} else if($value != "." && $value != "..") {
getFilesFromDirectory($path, $results);
$results[] = $path;
}
}
return $results;
}
我确信可以迭代这个函数,但我真的没有办法做到这一点。
【问题讨论】:
-
我怀疑。目录树是一棵树。你事先不知道它有多深。
-
绝对有可能,看我的回答。
-
如果不将 push/pop 操作从递归函数调用移动到数据结构,这是不可能的 - 即,您可以使代码迭代(以一定成本)但不能迭代操作。你这样做的目的是什么?
-
@Jparkinson:不——这只是隐藏了对象后面的递归——这就是为什么你不能静态调用类的原因。
-
但它没有达到作者想要的问题吗?递归通过返回其中所有文件路径的目录?