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 . "秒";
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."秒";
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 . "秒";
まとめ
PHPでcsvファイルを読み込むなら「SplFileObject」がおすすめ