使用 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);
?>