[英]PHP reading next line in text file while using lazy loading?
我有一個要逐行閱讀的文本文件。 對於每一行,我還需要下一行的值,因此我需要在當前行中讀取下一行的內容。
我在這里閱讀了許多答案,我可以用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()
調用,我不知道如何獲取下一行的值。 我該如何解決?
使用此 PHP 代碼解決方案。
$textFile = 'text.txt';
$file = new SplFileObject($textFile);
$lastNumber = 500;
foreach ($file as $lineNumber => $line) {
$currentNumber = intval($file->current());
if ($lineNumber === 0) {
$previousNumber = $currentNumber;
continue;
} else {
$nextNumber = $currentNumber - 1;
echo $previousNumber . ', ' . $nextNumber . '<br>';
$previousNumber = $currentNumber;
if ($file->eof()) {
$nextNumber = intval($lastNumber);
echo $currentNumber . ', ' . $nextNumber . '<br>';
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.