【发布时间】:2016-07-20 19:28:06
【问题描述】:
我试图找到一种从 csv 文件读取的快速方法,首先跳过几行,读取大约 20 行,然后停止读取。目前唯一的解决方案是使用 fread,效率很低。
【问题讨论】:
-
为什么要避免fread?这就是
fgetcsv()无论如何都会在内部使用的。一种或另一种方式,必须将这些行读入 php,以便它可以找出换行符的位置。如果您选择跳过/忽略这些行,那不是 php 的问题 - 必须读取数据。 -
你可以用
file()将整个文件读入一个数组,然后用array_slice()得到你想要的行。 -
但是如果文件很大,那会比较慢和浪费。你原来的方式可能是最好的。
-
问题是文件不是按行排列而是按块排列,要跳过多行,您需要扫描文件以找到换行符,因此使用阅读器读取行并丢弃它们几乎是不可避免的。