dtrnish3637 2013-12-31 09:08
浏览 205

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

When reading a specific line in a csv file, I tried to use SplFileObject::fseek with fgetcsv.

To read line 2 (for example), I do a fseek(1) and read with fgetcsv, which gives line 2.

When I do a fseek(0) and read with fgetcsv, I have line 0.

So there is a issue to read line 1 this way. (I know I can read 2 lines in a row but don't think it is nice).

I found this issue reported in 2008 with PHP version 5.2.6 : SplFileObject: fgetcsv after seek returns wrong line.

I'm using PHP verion 5.4.19.

Has anyone some information on this? Is this intended?

  • 写回答

1条回答 默认 最新

  • dongyukui8330 2017-10-28 23:05
    关注

    I know this is a pretty old bug but it's still opened on bugs.php So here is a snippet I want to share to achieve the same (which at least work in my case)

    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();
        }
    
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题