Dateinamen in einem Verzeichnis mit PHP abrufen: Das „1“-Rätsel lösen
In PHP die Namen von Dateien in einem Verzeichnis abrufen ist eine häufig anzutreffende Aufgabe. Bei einigen kann es jedoch zu einem unerwarteten Problem kommen, bei dem Dateinamen als „1“ anstelle ihrer tatsächlichen Namen zurückgegeben werden. Dieses Rätsel kann auftreten, wenn die Funktion readdir() mit is_dir() und opendir() verwendet wird.
Der Code:
if (is_dir($log_directory)) { if ($handle = opendir($log_directory)) { while ($file = readdir($handle) !== FALSE) { $results_array[] = $file; } closedir($handle); } }
Das Problem:
Beim Durchlaufen der Elemente des $results_array werden die erwarteten Dateinamen nicht zurückgegeben. Stattdessen werden sie durch „1“ ersetzt. Dieses Verhalten ist auf ein subtiles Detail in der Funktionsweise von readdir() zurückzuführen.
Die Lösung:
Um dieses Problem zu beheben, ist es ratsam, opendir() zu umgehen. und readdir() und verwenden Sie stattdessen glob(). glob() ist eine umfassende Funktion, die eine leistungsstarke Lösung zum Extrahieren von Dateinamen innerhalb eines Verzeichnisses bietet.
Der korrigierte Code:
foreach(glob($log_directory.'/*.*') as $file) { ... }
In diesem überarbeiteten Code glob() wird verwendet, um die Dateien im $log_directory zu durchsuchen und ihre Pfade zurückzugeben. Anschließend wird jeder Dateipfad der Variablen $file zugewiesen, was eine weitere Verarbeitung oder Nutzung ermöglicht.
Dieser Ansatz umgeht die Einschränkungen von readdir() und liefert die gewünschten Ergebnisse – eine Liste tatsächlicher Dateinamen, nicht „1 '.
Das obige ist der detaillierte Inhalt vonWarum gibt mein PHP-Code „1' anstelle von Dateinamen zurück, wenn ich „readdir()' verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!