我需要快速逐行讀取大型csv文件,并將字段劃分成一個數(shù)組。csv文件有10萬行。// Example 1, works in 3.5 secondsif(false !== $handle = fopen("data.csv", "r")) { while(($data = fgetcsv($handle, 0, ";"))) { $arData[] = $data; }}// Example 2, works in 0.3 secondsif(false !== $handle = fopen("data.csv", "r")) { while(($data = fgets($handle))) { $arData[] = explode(";", $data); }}為什么速度差異如此嚴(yán)重?還是我做錯了什么?該文檔說,fgetcsv該函數(shù)與相似fgets,只是將結(jié)果分成一個數(shù)組。
1 回答

揚(yáng)帆大魚
TA貢獻(xiàn)1799條經(jīng)驗 獲得超9個贊
fgetcsv 不會簡單地將行換成新行和逗號...而是從頭到尾逐個字符地解析文件,處理特殊情況,例如:
aaa,"bbb
ccc",ddd
和:
aaa,"bbb,ccc",ddd
(以上兩項均應(yīng)導(dǎo)致1x3數(shù)組)。它應(yīng)該比簡單的+慢。fgetsexplode
- 1 回答
- 0 關(guān)注
- 195 瀏覽
添加回答
舉報
0/150
提交
取消