関数の概要
PHPの feof 関数は、ファイルポインタがファイルの終端(EOF: End Of File)に達したかどうかを判定するために使います。ファイルからデータを逐次的に読み込む処理で、読み取りの終了条件として利用されることが多いです。主にファイル操作の際に、ループ処理の終了判定に使うことが一般的です。
パラメータの説明
resource $stream: ファイルポインタリソース。fopenなどで開いたファイルハンドルを指定します。
戻り値
feof はブール値を返します。ファイルポインタがファイルの終端に達していれば true、そうでなければ false です。ただし、ファイル末尾を過ぎた後に true を返す点に注意が必要です。
使用例
基本的な使い方
$fp = fopen('sample.txt', 'r');
while (!feof($fp)) {
$line = fgets($fp);
echo $line;
}
fclose($fp);
この例では、sample.txt を1行ずつ読み込み、ファイル終端に達するまで内容を表示しています。feof で終端に達するかを判定しているため、ファイルの最後まで確実に読み取れます。
ファイルのバイナリ読み込みに利用する例
$fp = fopen('image.png', 'rb');
while (!feof($fp)) {
$buffer = fread($fp, 1024);
// ここでバッファのデータを何らかの処理に使う
}
fclose($fp);
バイナリモードでファイルを読み込み、1KBずつデータを処理する例です。feof を使って終端を検知することで、ファイル全体を分割して安全に読み込めます。
エラーチェックを含めたファイル読み込み
$filename = 'data.txt';
$fp = fopen($filename, 'r');
if (!$fp) {
die('ファイルが開けませんでした。');
}
while (!feof($fp)) {
$line = fgets($fp);
if ($line === false) {
break; // 読み込みエラーや終端に備える
}
echo htmlspecialchars($line) . "<br>";
}
fclose($fp);
ファイルポインタが正しく開けたかチェックした上で、feof と fgets の戻り値を使って安全にファイル読み込みを行っています。エラーや終端でループを抜けます。
関連する関数
fopen– ファイルを開くfgets– ファイルから1行読み込むfread– ファイルから指定バイト数読み込むfclose– ファイルを閉じるrewind– ファイルポインタを先頭に戻す
まとめ
feof はPHPでファイルの終端を検知するために欠かせない関数です。ファイルの読み込み処理をループで行う際に便利で、読み込みの終了判定を簡潔に書けます。ただし、読み込み失敗時もEOF扱いになる場合があるため、fgets や fread の戻り値のチェックと組み合わせて使うとより確実です。初心者にも扱いやすく、実務でも広く利用される重要なファイル操作関数のひとつです。
