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