使用 next() 时的一个快速说明,似乎您必须已位于行的末尾才能跳到下一行。我在尝试执行以下类似的 lineCount 实现时意识到了这一点
<?php
function lineCount($file)
{
$x=0;
while(!$file->eof()) {
$x++;
$file->next();
}
return $x;
}
$file=new SplFileObject("something");
echo lineCount($file);
?>
它最终陷入无限循环。解决方案是在循环中调用 fgets()/current(),尽管它在任何地方都没有被使用,因此以下代码有效
<?php
function lineCount($file)
{
$x=0;
while(!$file->eof()) {
$file->current();
$x++;
$file->next();
}
return $x;
}
$file=new SplFileObject("something");
echo lineCount($file);
?>