SplFileObject::next
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplFileObject::next — 次の行を読み出す
パラメータ
この関数にはパラメータはありません。
戻り値
値を返しません。
例
例1 SplFileObject::next() の例
<?php
// 行単位でファイルを読み込む
$file = new SplFileObject("misc.txt");
while (!$file->eof()) {
echo $file->current();
$file->next();
}
?>
参考
- SplFileObject::current() - ファイルの現在の行を取得する
- SplFileObject::key() - 行番号を取得する
- SplFileObject::seek() - ファイルポインタを指定行に移動させる
- SplFileObject::rewind() - ファイルポインタを先頭に巻き戻す
- SplFileObject::valid() - ファイル終端でないかチェックする
+add a note
User Contributed Notes 2 notes
Jonnycake ¶
10 years ago
Quick note when using next(), it appears that you have to already be at the end of the line in order for it to hop to the next one. I realized this while attempting to do a lineCount implementaiton like the following:
<?php
function lineCount($file)
{
$x=0;
while(!$file->eof()) {
$x++;
$file->next();
}
return $x;
}
$file=new SplFileObject("something");
echo lineCount($file);
?>
It ended up in an infinite loop. The solution was to just call fgets()/current() in the loop, although it wasn't being used anywhere so the following works:
<?php
function lineCount($file)
{
$x=0;
while(!$file->eof()) {
$file->current();
$x++;
$file->next();
}
return $x;
}
$file=new SplFileObject("something");
echo lineCount($file);
?>
quijote dot shin at gmail dot com ¶
7 years ago
As @Jonnycake pointed there is no documentation about the following behavior of next();
You need to call current() to really move forward without the need of a source loop.
Be:
<?php
$file = new SplFileObject("file.txt");
echo PHP_EOL . $file->current();
$file->next();
$file->next();
$file->next();
echo PHP_EOL . $file->current(); // 2nd line of the file
?>
<?php
$file = new SplFileObject("file.txt");
echo PHP_EOL . $file->current();
$file->next(); $file->current();
$file->next(); $file->current();
$file->next();
echo PHP_EOL . $file->current(); // be the 4th line of the file
?>
Honestly, I don't know if it is waste of memory and/or CPU .
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google