個人開発者をサポートするQ&Aツール

個人開発者・フリーランスエンジニア・リモートプログラマの
問題解決をサポートするサービスです

登録不要ですぐに質問を開始できます

空のファイルでPHP feof($file)がfalseを返してしまう

解決済 50pt 1件

【エラー内容】

空のファイルでPHP feof($file)がfalseを返してしまう

【試した内容】

これがPHPコード
#!/usr/bin/php
<?php
if ($file = fopen("file.txt", "r")) {
    while(!feof($file)) {
        $line = fgets($file);
        echo "----" , $line , "----";
    }
    fclose($file);
}
?>

そして空のファイルfile.txt

[root@localhost]# ls -l  file.txt 
-rw-r--r-- 1 root root 0 Апр 21 10:14 file.txt
[root@localhost]# file file.txt 
file.txt: empty

最初のループでfopenがtrueになるはずなのに、なんか間違ってます?

[root@localhost ]# php -f  test2.php
--------

[root@localhost ]# 

chrome
php
ベストアンサーに選ばれた回答
ファイルがすでに空ですが、PHPはfgets()メソッドを実行するまで認識できないからです
PHPが最初の空行を読み取らないようにするには、fgets()がfalseでないことを確認する必要があります。
こんな感じでどうでしょうか?

if ($file = fopen("file.txt", "r")) {
    while (($line = fgets($file)) !== false) {
        echo "----" , $line , "----";
    }
    fclose($file);
}

回答の編集

この質問はすでに終了しているため変更できません


回答

この質問はすでに終了しているため、回答できません