feof

関数の概要

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);

ファイルポインタが正しく開けたかチェックした上で、feoffgets の戻り値を使って安全にファイル読み込みを行っています。エラーや終端でループを抜けます。

関連する関数

  • fopen – ファイルを開く
  • fgets – ファイルから1行読み込む
  • fread – ファイルから指定バイト数読み込む
  • fclose – ファイルを閉じる
  • rewind – ファイルポインタを先頭に戻す

まとめ

feof はPHPでファイルの終端を検知するために欠かせない関数です。ファイルの読み込み処理をループで行う際に便利で、読み込みの終了判定を簡潔に書けます。ただし、読み込み失敗時もEOF扱いになる場合があるため、fgetsfread の戻り値のチェックと組み合わせて使うとより確実です。初心者にも扱いやすく、実務でも広く利用される重要なファイル操作関数のひとつです。