ホームページ  >  記事  >  バックエンド開発  >  PHP で大きな CSV ファイルを 1 行ずつ読み取って処理する例

PHP で大きな CSV ファイルを 1 行ずつ読み取って処理する例

WBOY
WBOYオリジナル
2016-07-25 08:53:381065ブラウズ
  1. /**
  2. * csv_get_lines CSV ファイル内の特定の行のデータを読み取ります
  3. * @param $csvfile CSV ファイルのパス
  4. * @param $lines 行数を読み取ります
  5. * @param $offset 開始行番号
  6. * @return array
  7. **/ bbs.it-home.org
  8. function csv_get_lines($csvfile, $lines, $offset = 0) {
  9. if(!$fp = fopen( $csvfile, 'r')) {
  10. return false;
  11. }
  12. $i = $j = 0;
  13. while (false !== ($line = fgets($fp))) {
  14. if($i++ < $offset) {
  15. 続行;
  16. }
  17. ブレーク;
  18. }
  19. $data = array();
  20. while(($j++ < $lines) && !feof($fp)) {
  21. $data[] = fgetcsv( $fp);
  22. }
  23. fclose($fp);
  24. return $data;
  25. }
コードをコピー

メソッドを呼び出す:

  1. $data = csv_get_lines('path/bigfile.csv', 10, 2000000);
  2. print_r($data);
コードをコピー

関数は主にlineを使用します位置決め このアイデアは、開始行番号をスキップすることによってファイル ポインターの位置決めを実現することです。 上記の機能は 500M 以内のファイルでテストされていますが、それより大きなファイルではテストされていません。使用または改善を検討してください。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。