[英]php ; using fgetcsv with SplFileObject::fseek ; line read issue
當讀取csv文件中的特定行時,我嘗試將SplFileObject::fseek
與fgetcsv
一起使用。
要讀取第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.