EOF は非常に重要な概念です。ほとんどすべての主流プログラミング言語には、パーサーがファイル EOF に到達したかどうかを確認するための対応する組み込み関数が用意されています。 PHP では、この関数は feof() です。 feof() 関数は、リソースの終わりに到達したかどうかを判断するために使用されます。ファイル I/O 操作でよく使用されます。その形式は次のとおりです:
int feof(string resource)
コード例は次のとおりです:
$fh = fopen("/home/www/data/users.txt", "rt");
while (!feof ($fh)) echo fgets($fh);
fclose($fh);
?>
bool feof ( resource $handle ): これからファイル ポインターのファイルの終わりをテストします
phpマニュアル 正確な言葉。
便宜上、以前はこのように使用していました
// ファイルを読み取れない、またはファイルが存在しない場合、fopen 関数は FALSE を返します
$file = @fopen("no_ such_file", "r");
/ / fopen からの FALSE は警告を発行し、ここで無限ループになります
while (!feof($file)) {
}
fclose($file);
?>
確かに、このように使うと簡単です。ただし、上記の変数 $file が正当なファイル ポインタではないか、fclose によって閉じられている場合は、
すると、プログラムの6行目で警告が発生し、無限ループが発生します。
なぜですか?
その理由は、
ファイルポインタがEOFにある場合、またはエラーが発生した場合(ソケットタイムアウトを含む)はTRUEを返し、それ以外の場合はFALSEを返すためです。
そのため、安全のために、上記のコードを使用するときに判断を追加するのが最善です。 is_resource の方がまだ安全です