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 после поиска возвращает неправильную строку.

Я использую PHP verion 5.4.19.

У кого-нибудь есть информация по этому поводу? Это предназначено?

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

}
Другие вопросы по тегам