2016-08-09 39 views
0

Ich habe die folgende Funktion: nur die erste Filiale des VerzeichnissesRecursively alle Dateien im Verzeichnisliste

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')); 

Das hat zwar irgendwie das Array funktioniert. Aber wenn ich den Pfad innerhalb von foreach zurückmelde, bekomme ich den Pfad jeder Datei aus allen Ordnern und Unterordnern und so weiter.

Wahrscheinlich ist das etwas sehr kleines, aber ich kann nicht herausfinden, was und ich könnte etwas Hilfe gebrauchen. Vielen Dank.

+1

Mögliche Duplikate von [PHP Liste aller Dateien im Verzeichnis] ​​(http://StackOverflow.com/Questions/3826963/PHP-list-all-Files-in-Directory) –

+0

Es ist der gleiche Titel für ein anderes Problem, wenn Sie die Frage genau lesen –

+0

Wenn Sie das mitgelieferte Duplikat genau lesen - Sie werden dort mehr ähnliche Fragen finden, aber es ist zu schwer, ich verstehe. –

Antwort

0

in Ihrer rekursive Funktion, wenn ein subdir ist die Funktion selbst mit dem subdir nennen zu finden, aber es der Ergebnisse von nicht behandelt, keine Variablen zugewiesen, so dass sie verloren gehen, können Sie es, um Ihre Ergebnisse wie diese drängen sollen:

+0

ja, aber jetzt erstellt es doppelte Arrays ... –

+0

wie meinst du? Es sollte Subdirs als Arrays zurückgeben, die mehrdimensionale Arrays für Subdirs für das Endergebnis erstellen. –