php; 将 fgetcsv 与 SplFileObject::fseek 结合使用;行读取问题

use*_*220 5 php fseek fgetcsv splfileobject

当读取 csv 文件中的特定行时,我尝试使用SplFileObject::fseekwith fgetcsv

要读取第 2 行(例如),我执行 afseek(1)并使用 读取fgetcsv,这给出了第 2 行。

当我执行 afseek(0)并使用 读取时fgetcsv,我得到了第 0 行。

所以以这种方式读取第 1 行存在一个问题。(我知道我可以连续阅读两行,但我认为这不太好)。

我发现这个问题在 2008 年 PHP 版本 5.2.6 中报告:SplFileObject: fgetcsv aftereek returns error line

我使用的是 PHP 版本 5.4.19。

有人有这方面的信息吗?这是故意的吗?

Syl*_*wit 1

我知道这是一个相当老的错误,但它仍然在 bugs.php 上打开所以这里是我想分享的一个片段以实现相同的目的(至少在我的情况下有效)

function readBigCsv($path, $skip=1)
{
    $file = new \SplFileObject($path, 'r');
    $file->setFlags(\SplFileObject::READ_CSV);
    $file->seek($skip);

    while (!$file->eof()){
        yield $file->current();
        $file->next();
    }

}
Run Code Online (Sandbox Code Playgroud)