开发者

fgetcsv open at specific row?

开发者 https://www.devze.com 2023-03-29 21:58 出处:网络
Is there a way to use fgetcsv to open on a particular row? I have a r开发者_JAVA百科eally big csv and would like to run around 100 lines at a time via ajax. I can easily stop the while loop, but how

Is there a way to use fgetcsv to open on a particular row?

I have a r开发者_JAVA百科eally big csv and would like to run around 100 lines at a time via ajax. I can easily stop the while loop, but how would I open on a particular line? Or is this impossible?


There's no simple way to start reading at row 100, but what you can do is read/set the position in the file like this:

$k = <previous position>;
fseek($file, $k);
while(...) {
   fgetcsv(...);
   ...
}
$k = ftell($file);   //new position

Now it's just a matter of preserving this position between page calls.


The currently accepted answer doesn't seem to answer the actual the question. The posted question is how to open at a particular row. The answer above is great way to save a spot and come back to it, but doesn't answer the question of opening/starting at a particular row.

I'm also searching for a nicer way to do this, so far here's what I have:

function parse_data($skip_rows = 0){
  $record_number = 0;
  while (($data = fgetcsv($handle, 2000, ",")) !== FALSE) {
    if (++$record_number <= $skip_products) continue;
    // do work
  }
}

Works, but I'm sure there's a nicer way.

EDIT: found a similar question: How do I open a file from line X to line Y in PHP?

Better to use: SplFileObject

0

精彩评论

暂无评论...
验证码 换一张
取 消