У меня есть текстовый файл, который я хочу прочитать построчно. Для каждой строки мне также нужно значение из следующей строки, поэтому мне нужно что-то, чтобы прочитать следующую строку, находясь в текущей строке.
Я прочитал здесь много ответов, что я могу сделать это с помощью цикла foreach
, но для этого требуется прочитать весь файл заранее. Я ищу что-то, чтобы читать только по мере необходимости.
Вот что я получил с помощью SplFileObject.
$file = new \SplFileObject($textFile);
$lastNumber = 500;
while (!$file->eof()) {
$currentLine = $file->fgets();
$currentNumber = intval($currentLine);
$file->next();
if ($file->eof()) {
$nextNumber = intval($lastNumber);
} else {
$nextNumber = intval($file->fgets()) - 1;
}
echo $currentNumber . ', ' . $nextNumber . '<br>';
}
Предположим, у меня есть текст, в котором есть такие строки
0
100
200
300
400
Я хочу, чтобы они распечатывались так
0, 99
100, 199
200, 299
300, 399
400, 500
Но мой код пропускал каждую вторую строку
0, 99
200, 299
400, 500
Я предполагаю, что мой цикл while и $file->next()
каждый перемещают строку на 1 каждый цикл, поэтому пропуск. Но без вызова next()
я не знаю, как получить значение следующей строки. Как это исправить?