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
Susan SarandonOriginal
2024-12-06 13:07:12427Durchsuche

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);

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!

Stellungnahme:
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