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