Heim > Backend-Entwicklung > PHP-Tutorial > Warum gibt mein PHP-Code „1' anstelle von Dateinamen zurück, wenn ich „readdir()' verwende?

Warum gibt mein PHP-Code „1' anstelle von Dateinamen zurück, wenn ich „readdir()' verwende?

Mary-Kate Olsen
Freigeben: 2024-12-05 10:18:16
Original
781 Leute haben es durchsucht

Why Does My PHP Code Return

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);
    }
}
Nach dem Login kopieren

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) {
    ...
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage