2016-08-09 7 views
0

内のすべてのファイルを一覧表示:は、再帰的に、私は、以下の機能を持っているディレクトリ

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内でパスをエコーすると、すべてのフォルダとサブフォルダからすべてのファイルのパスが取得されます。

おそらくこれは非常に小さいものですが、私は何が分かり、何か助けになるかもしれません。ありがとうございました。

+1

[PHPはディレクトリ内のすべてのファイルを一覧表示する](http://stackoverflow.com/questions/3826963/php-list-all-files-in-directory) –

+0

別の問題で同じタイトルですが、あなたが質問をよく読むと –

+0

あなたが提供された複製物をよく読んでいるならば、もっと似たような質問があるでしょうが、それは難しいです。 –

答えて

0

subdirでsubdirで関数自体を呼び出しても結果は処理されず、変数に代入されずに失われている場合は、結果にプッシュする必要があります。

if(is_dir($path)){ 
    $results[] = listFiles($path, $results); 
} 
+0

いや、でも今は複製配列を作成しています... –

+0

どういう意味ですか?それは最終結果のための多次元配列を作成する配列としてsubdirを返すべきです。 –

関連する問題