加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 22:51:13 所属栏目:PHP教程 来源:网络整理
导读:当读取csv文件中的特定行时,我尝试将splFileObject :: fseek与fgetcsv一起使用. 要读取第2行(例如),我执行fseek(1)并使用fgetcsv读取,它给出第2行. 当我执行fseek(0)并使用fgetcsv读取时,我有第0行. 因此,以这种方式读取第1行存在问题. (我知道我可以连续阅
当读取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();
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读