[英]Recursively listing all files in directory
我有以下功能:
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中回显路径,那么我将从所有文件夹和子文件夹中获取每个文件的路径,依此类推。
可能这是很小的东西,但我不知道该怎么办,可以使用一些帮助。 谢谢。
在递归函数内部,如果找到了一个子目录,则可以用该子目录调用函数本身,但是其结果未处理,未分配给任何变量,因此它们会丢失,您应按如下所示将其推入结果:
if( is_dir($path) ){
$results[] = listFiles($path, $results);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.