簡體   English   中英

php; 使用fgetcsv和SplFileObject :: fseek; 讀行問題

[英]php ; using fgetcsv with SplFileObject::fseek ; line read issue

當讀取csv文件中的特定行時,我嘗試將SplFileObject::fseekfgetcsv一起使用。

要讀取第2行(例如),我執行fseek(1)並使用fgetcsv讀取,它給出第2行。

當我執行fseek(0)並使用fgetcsv讀取fgetcsv ,我有第0行。

因此,以這種方式讀取第1行存在問題。 (我知道我可以連續閱讀2行但不認為它很好)。

我發現這個問題在2008年用PHP版本5.2.6報告: SplFileObject:fgetcsv在seek返回錯誤的行之后

我正在使用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();
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM