首页 > 解决方案 > 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

为什么我得到?feof 在第一个循环中应该是真的还是我错了?

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

[root@localhost ]# 

标签: php

解决方案


fgets()是的,那是因为文件已经是空的,但是 PHP 在执行该方法之前并不知道它。

为了避免 PHP 读取第一个空行,您必须检查fgetsis not false. 为此,应该执行以下操作:

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

推荐阅读