繁体   English   中英

递归列出目录中的所有文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM