PHP feof ($ file) возвращает false в пустом файле - PullRequest
2 голосов
/ 21 апреля 2020

Существует 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 должен быть верным в первую очередь l oop или я не прав?

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

[root@localhost ]# 

1 Ответ

3 голосов
/ 21 апреля 2020

Да, это потому, что файл уже пуст, но PHP не знает его, пока не выполнит метод fgets().

Во избежание PHP читает первую пустую строку, Вы должны проверить, что fgets не false. Для этого нужно сделать что-то вроде:

if ($file = fopen("file.txt", "r")) {
    while (($line = fgets($file)) !== false) {
        echo "----" , $line , "----";
    }
    fclose($file);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...