Maison >développement back-end >tutoriel php >Pourquoi ma boucle PHP `while (!feof())` ne lit-elle pas l'intégralité du fichier ?
La boucle PHP While (!feof()) ne produit pas de données complètes
Lors de la tentative de lecture et d'affichage de l'intégralité du contenu d'un .txt fichier utilisant une boucle while (!feof()), les utilisateurs peuvent rencontrer un problème où la boucle ne termine pas la sortie, sautant ou tronquant potentiellement la fin du fichier. Ce problème survient lorsque le test de fin de fichier (EOF) se produit avant l'opération de lecture finale.
Pour résoudre ce problème, il est recommandé de modifier la structure de la boucle pour effectuer la vérification EOF dans le cadre du processus de lecture. . Voici un extrait de code amélioré :
$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);
De plus, il est conseillé de gérer les erreurs explicitement plutôt que de les supprimer à l'aide de @. L'extrait de code amélioré :
$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;
Lors du test de ce code avec le fichier de données fourni, il produit le résultat correct, y compris la dernière entrée du fichier :
[aa_fade_revolver]weapon_revolver" "1"
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!