Heim > Backend-Entwicklung > PHP-Tutorial > Warum liest meine PHP-Schleife „while (!feof())' nicht die gesamte Datei?

Warum liest meine PHP-Schleife „while (!feof())' nicht die gesamte Datei?

Susan Sarandon
Freigeben: 2024-12-06 13:07:12
Original
428 Leute haben es durchsucht

Why Doesn't My PHP `while (!feof())` Loop Read the Entire File?

PHP While-Schleife (!feof()) gibt keine vollständigen Daten aus

Beim Versuch, den gesamten Inhalt einer TXT-Datei zu lesen und anzuzeigen Beim Erstellen einer Datei mit einer While-Schleife (!feof()) kann es zu einem Problem kommen, bei dem die Schleife die Ausgabe nicht abschließt und möglicherweise das Ende der Datei überspringt oder abschneidet. Dieses Problem tritt auf, wenn der End-of-File-Test (EOF) vor dem endgültigen Lesevorgang stattfindet.

Um dieses Problem zu beheben, wird empfohlen, die Schleifenstruktur zu ändern, um die EOF-Prüfung als Teil des Lesevorgangs durchzuführen . Hier ist ein verbesserter Codeausschnitt:

$handle = fopen("item_sets.txt", "r");

if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        $trimmed = trim($buffer);
        echo $trimmed;
    }
} else {
    echo 'Unexpected error opening file';
}
fclose($handle);
Nach dem Login kopieren

Zusätzlich ist es ratsam, Fehler explizit zu behandeln, anstatt sie mit @ zu unterdrücken. Das verbesserte Code-Snippet:

$line_count = 0;

$handle = fopen("item_sets.txt", "r");

if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        $trimmed = trim($buffer);
        echo $trimmed;
        $line_count++;
    }
} else {
    echo 'Unexpected error opening file';
}
fclose($handle);

echo PHP_EOL.PHP_EOL.PHP_EOL.'Lines read from file = ' . $line_count;
Nach dem Login kopieren

Beim Testen dieses Codes mit der bereitgestellten Datendatei wird die korrekte Ausgabe erzeugt, einschließlich des letzten Eintrags in der Datei:

[aa_fade_revolver]weapon_revolver"          "1"
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum liest meine PHP-Schleife „while (!feof())' nicht die gesamte Datei?. 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