我有以下功能:
function listFiles($dir, $results = array()){
$entities = is_dir($dir) ? array_values(array_diff(scandir($dir), array('..', '.'))) : false ;
if( $entities )
foreach( $entities as $e ) {
$path = $dir.'/'.$e;
if( is_dir($path) ) {
listFiles($path, $results);
}
$results[] = $path;
}
return $results;
}
print_r(listFiles('/home/apps/public_html/test_folder'));
虽然这在某种程度上起作用,但数组只有目录的第一个分支。但是,如果我回显foreach中的路径,我会从所有文件夹和子文件夹中获取每个文件的路径,等等。
这可能是非常小的但我无法弄清楚什么,我可以使用一些帮助。谢谢。
答案 0 :(得分:0)
在递归函数内部,如果找到了一个子目录,你用子句调用函数本身,但它的结果没有处理,没有分配给任何变量,所以它们会丢失,你应该把它推到你的结果中这样:
if( is_dir($path) ){
$results[] = listFiles($path, $results);
}