Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich mit PHP alle Dateien und Ordner in einem Verzeichnis rekursiv auflisten und dabei Endlosschleifen und doppelte Einträge vermeiden?
Ermitteln von Dateien und Ordnern in einem Verzeichnis mithilfe rekursiver PHP-Funktionen
Diese Diskussion untersucht eine Methode zum rekursiven Durchlaufen der Dateien und Unterverzeichnisse eines Verzeichnisses.
Die bereitgestellten Code:
function getDirContents($dir){ $results = array(); $files = scandir($dir); foreach($files as $key => $value){ if(!is_dir($dir. DIRECTORY_SEPARATOR .$value)){ $results[] = $value; } else if(is_dir($dir. DIRECTORY_SEPARATOR .$value)) { $results[] = $value; getDirContents($dir. DIRECTORY_SEPARATOR .$value); } } } print_r(getDirContents('/xampp/htdocs/WORK'));
Das Dilemma:
Der angegebene Code verfügt über eine rekursive Funktion zum Durchsuchen von Verzeichnissen und Dateien. Allerdings wird „.“ nicht außer Acht gelassen. und '..', was zu einer potenziell endlosen Schleife führt. Darüber hinaus wird jede Datei und jedes Verzeichnis in den Ergebnissen dupliziert.
Die Antwort:
Um dieses Problem zu beheben, können wir die Funktion wie folgt ändern:
function getDirContents($dir, &$results = array()) { $files = scandir($dir); foreach ($files as $key => $value) { $path = realpath($dir . DIRECTORY_SEPARATOR . $value); if (!is_dir($path)) { $results[] = $path; } else if ($value != "." && $value != "..") { getDirContents($path, $results); $results[] = $path; } } return $results; }
Dieser Code:
Das obige ist der detaillierte Inhalt vonWie kann ich mit PHP alle Dateien und Ordner in einem Verzeichnis rekursiv auflisten und dabei Endlosschleifen und doppelte Einträge vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!