Maison > développement back-end > tutoriel php > Pourquoi ma boucle PHP `while (!feof())` ne lit-elle pas l'intégralité du fichier ?

Pourquoi ma boucle PHP `while (!feof())` ne lit-elle pas l'intégralité du fichier ?

Susan Sarandon
Libérer: 2024-12-06 13:07:12
original
442 Les gens l'ont consulté

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

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);
Copier après la connexion

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;
Copier après la connexion

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"
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal