Исправление работы feof () php - PullRequest
0 голосов
/ 13 февраля 2019

Я прочитал комментарий о feof() в руководстве по PHP , здесь ответ на StackOverflow и другой ответ на StackOverflow .

Итак, я понял, что использование feof() не означает использование «хрустального шара», чтобы волшебным образом узнать, есть ли еще символы или строки в потоке, как упоминалось во второй ссылке выше.Скорее, это тест, который показывает, была ли операция ввода неудачной или нет (в этом случае мне важна только операция ввода fgetc() PHP).Так что последний прочитанный символ все равно будет в порядке. И ПОТОМ , feof() из while(!feof($file_you_read_from)) все равно будет false просто потому, что последний fgetc() все еще успешен и после еще один цикл, где fgetc() пытается прочитать и потерпеть неудачу, только тогда feof() будет установлен в true .Я прав?Я что-то не так понял?

1 Ответ

0 голосов
/ 13 февраля 2019

feof в PHP работает так же, как C.

Если это false, то проверяется последняя операция, в противном случае возвращается кэшированное значение.

Источник здесь

Комментарий для C feof

Проверяет, установлен ли индикатор конца файла, связанный с потоком, возвращая значение, отличное отноль, если он есть.

Этот индикатор обычно устанавливается предыдущей операцией в потоке, который пытался прочитать в конце файла или после него.

Обратите внимание, что индикатор внутренней позиции потока можетуказать конец файла для следующей операции, но индикатор конца файла может быть не установлен, пока операция не попытается прочитать в этой точке.

Этот индикатор очищается вызовомочистить, перемотать, fseek, fsetpos или freopen.Хотя если при таком вызове индикатор положения не перемещается, следующая операция ввода-вывода, скорее всего, снова установит индикатор.

...