Heim >Backend-Entwicklung >PHP-Tutorial >Warum liest meine PHP-Schleife „while (!feof())' nicht die gesamte Datei?
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);
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;
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"
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!