Maison >développement back-end >tutoriel php >Pourquoi ma boucle PHP `while (!feof())` produit-elle une sortie incomplète ?

Pourquoi ma boucle PHP `while (!feof())` produit-elle une sortie incomplète ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-08 20:18:14824parcourir

Why Does My PHP `while (!feof())` Loop Produce Incomplete Output?

Boucle PHP : résolution d'une sortie incomplète avec while (!feof())

En PHP, vous pouvez rencontrer des situations où une boucle utilisant while (!feof()) ne génère pas tout le contenu attendu. Ce problème peut survenir en raison d'un placement incorrect de la vérification EOF dans la boucle, comme démontré par un utilisateur essayant de lire et de faire écho à un fichier .txt entier.

Le code d'origine :

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

while (!feof($handle)) {
    $buffer = fgets($handle, 4096);
    $trimmed = trim($buffer);
    echo $trimmed;
}

Dans ce code, la vérification de l'EOF est effectuée avant de sortir le contenu lu. En conséquence, la boucle se termine et arrête la lecture du fichier avant que la dernière ligne ne soit complètement imprimée.

La solution consiste à intégrer la vérification EOF dans le processus de lecture :

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

while (($buffer = fgets($handle, 4096)) !== false) {
    $trimmed = trim($buffer);
    echo $trimmed;
}

En déplaçant le EOF vérifie l'état de la boucle while, le code garantit que la boucle continue de lire et d'imprimer les lignes jusqu'à ce que la fin du fichier soit atteinte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn