为了账号安全,请及时绑定邮箱和手机立即绑定

为什么fgets +爆炸比fgetcsv快?

为什么fgets +爆炸比fgetcsv快?

PHP
猛跑小猪 2021-04-14 17:18:25
我需要快速逐行读取大型csv文件,并将字段划分成一个数组。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);    }}为什么速度差异如此严重?还是我做错了什么?该文档说,fgetcsv该函数与相似fgets,只是将结果分成一个数组。
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

fgetcsv 不会简单地将行换成新行和逗号...而是从头到尾逐个字符地解析文件,处理特殊情况,例如:


aaa,"bbb

ccc",ddd

和:


aaa,"bbb,ccc",ddd

(以上两项均应导致1x3数组)。它应该比简单的+慢。fgetsexplode


查看完整回答
反对 回复 2021-04-23
  • 1 回答
  • 0 关注
  • 173 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信