编程语言
首页 > 编程语言> > php;使用fgetcsv和SplFileObject :: fseek;读行问题

php;使用fgetcsv和SplFileObject :: fseek;读行问题

作者:互联网

当读取csv文件中的特定行时,我尝试将splFileObject :: fseek与fgetcsv一起使用.

要读取第2行(例如),我执行fseek(1)并使用fgetcsv读取,它给出第2行.

当我执行fseek(0)并使用fgetcsv读取时,我有第0行.

因此,以这种方式读取第1行存在问题. (我知道我可以连续阅读2行但不认为它很好).

我在2008年使用PHP 5.2.6:SplFileObject: fgetcsv after seek returns wrong line发现了这个问题.

我正在使用PHP版本5.4.19.

有没有人有关于此的一些信息?
这是有意的吗?

解决方法:

我知道这是一个很老的bug,但它仍然在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();
    }

}

标签:php,fgetcsv,fseek,splfileobject
来源: https://codeday.me/bug/20190708/1406736.html