現在の位置: ホーム> 最新記事一覧> Feofを使用して最後の行を読んだ後に、追加の読み取り問題を獲得するのはなぜですか?それを避ける方法は?

Feofを使用して最後の行を読んだ後に、追加の読み取り問題を獲得するのはなぜですか?それを避ける方法は?

gitbox 2025-09-01
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// このドキュメントは、記事の出力の例です,使用 PHP スクリプト表示</span></span><span>
</span><span><span class="hljs-comment">// 実際のシナリオで渡すことができます echo Webページまたはコマンドラインへの出力</span></span><span>
</span><span><span class="hljs-comment">// 水平線を使用して、記事の本文とプログラムの説明を分離します</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h1>なぜ使用するのか feof 追加の読書の問題は、最後の行を読んだ後に発生します?避ける方法?</h1>

<p>存在する PHP で使用されます <code></span><span><span class="hljs-title function_ invoke__">feof</span></span><span>()

上記のコードでは、最後の行を読んだ後、 feof()はまだfalseであるため、ループの入力を続けます。 feof()はfgets()が再び読み取られなかった後にのみTRUEになります。これにより、追加の無効な読み取りが発生します。

正しい書き込み

追加の読み取りを避けるために、通常、読み取り関数をループ条件に配置することをお勧めします。

 

这种方式确保了只有在成功读取到内容时才会进入循环体,而不会产生额外的一次空读取。

总结

  • feof() 只有在读取失败后才会返回 true,因此单独用它作为循环条件会产生额外读取。
  • 推荐使用 while (($line = fgets($handle)) !== false) 这样的写法,保证逻辑严谨。
  • 理解文件指针和 EOF 判断机制,有助于避免常见的文件读取陷阱。

掌握了正确用法后,使用 PHP 操作文件时就能更高效、更可靠地处理数据。