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