SplFileObject::next

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

SplFileObject::nextRead next line

Descrição

public SplFileObject::next(): void

Moves ahead to the next line in the file.

Parâmetros

Esta função não possui parâmetros.

Valor Retornado

Nenhum valor é retornado.

Exemplos

Exemplo #1 SplFileObject::next() example

<?php
// Read through file line by line
$file = new SplFileObject("misc.txt");
while (!
$file->eof()) {
echo
$file->current();
$file->next();
}
?>

Veja Também

add a note add a note

User Contributed Notes 2 notes

up
4
Jonnycake
9 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);
?>
up
-2
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 .
To Top