PHPでcsvファイルを読み込む際の選択肢として「fgetcsv」「str_getcsv」「SplFileObject」などの関数があります。それぞれの実行速度を比較したメモ書きです。
fgetcsv
「php csv」とかで検索するとたくさん出てくるのがコレ。
$time_start = microtime(true); $file = fopen("zenkoku.csv","r"); while( ($line = fgetcsv($file) ) !== false){ $array[] = $line; } fclose("zenkoku.csv"); $time = microtime(true) - $time_start; echo $time."秒";
結果:1.715秒
str_getcsv
PHPバージョン5.3.0以上でのみ使用可能
指定文字でパースすることができます。
$time_start = microtime(true); $file = str_getcsv(file_get_contents("zenkoku.csv"), "\r\n"); foreach ($file as $line){ $array[] = str_getcsv($line); } $time = microtime(true) - $time_start; echo $time."秒";
結果:2.148秒
SplFileObject
ファイル読み込み用のオブジェクト指向インターフェイス
$time_start = microtime(true); $file = new SplFileObject("zenkoku.csv"); $file->setFlags(SplFileObject::READ_CSV); foreach ($file as $line){ $array[] = $line; } $time = microtime(true) - $time_start; echo $time."秒";
結果:1.385秒
まとめ
PHPでcsvファイルを読み込むなら「SplFileObject」がおすすめ