Как сделать так, чтобы feof не считал последнюю строку файла? - PullRequest
0 голосов
/ 11 июня 2019

Итак, я настроил этот код так:

 while(! feof($fn))  {
  $result = fgets($fn);
// some code
}

Как мне сделать так, чтобы он игнорировал последнюю строку в текстовом файле.Мой текстовый файл настроен так, что когда что-то добавляется, он добавляет новую строку после этого.Это делает ошибку смещения из-за отсутствия данных для последней строки.

Я уже пытался это сделать, поэтому он добавляет новую строку перед данными, но затем создает другую ошибку, потому что у нее будет смещение, а первая строка будет разрывом.(Если потребуется дополнительная информация, я отредактирую вопрос)

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Почти с тем же кодом вы можете игнорировать последнюю строку:

while($result = fgets($fn)) {
    if (!feof($fn)) {
        // process all lines except the last one
    }
}

fgets() вернет false, когда больше не будет прочитано ни одной строки, поэтому он действует также как feof().

0 голосов
/ 11 июня 2019

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

$result = fgets($fn);
if ( empty(trim($result)) ) {
    continue;
}

Это также справитсяс пустыми строками в любой точке файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...