ホームページ >バックエンド開発 >PHPチュートリアル >PHP の `while (!feof())` ループがテキスト ファイル全体を表示しないのはなぜですか?それを修正するにはどうすればよいですか?

PHP の `while (!feof())` ループがテキスト ファイル全体を表示しないのはなぜですか?それを修正するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-05 20:18:12693ブラウズ

Why is my PHP `while (!feof())` loop not displaying the entire text file, and how can I fix it?

PHP - テキスト ファイルの内容の読み取りと表示におけるループの非効率

PHP では、テキスト全体を効率的に読み取り、表示することを目的としています。ファイル。ただし、while (!feof()) ループが意図したとおりにすべてのコンテンツを出力しないという問題が発生しました。

この問題は、ファイルの終わり (EOF) チェックの配置が原因で発生します。 。コードでは、コンテンツが実際に出力される前に EOF チェックが実行されます。これにより、ファイル内の最後の文字列が部分的にしか出力されない状況が発生する可能性があります。

これを修正するには、読み取りプロセス自体の中に EOF チェックを配置します。以下の修正されたコード:

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

また、ファイルを開くときに発生する可能性のあるエラーが隠蔽される可能性があるため、fopen の前に抑制演算子 (@) を使用しないことをお勧めします。エラー抑制なしで更新されたコード:

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

これで、ループは EOF に達するまでファイルを反復処理し、すべてのコンテンツを正しく出力します。堅牢なコードを実現するには、ファイルを開いたり読み取りプロセス中に発生する可能性のあるエラーを処理することをお勧めします。

以上がPHP の `while (!feof())` ループがテキスト ファイル全体を表示しないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。