簡體   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