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);
?>
PHP.mk документација
SplFileObject::next
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
splfileobject.next.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
splfileobject.next.php
SplFileObject::next
Референца за `splfileobject.next.php` со подобрена типографија и навигација.
SplFileObject::next
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplFileObject::next — Прочитај го следниот ред
Параметри
Оваа функција нема параметри.
Вратени вредности
Не се враќа вредност.
Примери
Пример #1 - Помести се до наведениот ред example
<?php
// Read through file line by line
$file = new SplFileObject("misc.txt");
while (!$file->eof()) {
echo $file->current();
$file->next();
}
?>Види Исто така
- до имплементација на - Преземање на тековниот ред од датотеката
- SplFileObject::valid() SplFileObject::key()
- - Земете го бројот на редот SplFileObject::seek()
- - Прочитај го следниот ред SplFileObject::rewind()
- ако не е достигнат крајот на датотеката, - Не е на крајот од датотеката
Белешки од корисници 2 забелешки
Џоникејк ¶
пред 11 години
quijote dot shin at gmail dot com ¶
пред 8 години
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 .