对非常大的数组执行PHP array_filter或从文件中加载较少数据的最快方法


Quickest way to do PHP array_filter on very big array or load less data from a file?

问题

我有一个将近2Mb的txt文件。它有包含时间、日期、名称和消息的行。我想在每一行上做一个正则表达式,所以我首先将文件读取到数组中。

$array1 = file('<file_name>');

文件中的每一行之间都有一条我想跳过的白线在stackoverflow上,我发现下面的代码女巫似乎还可以

array_values( array_filter($array1, 'trim'));

我的问题是这个过程需要很长时间

问题

  1. 在我制作数组之前,有没有一种方法可以在读取文件时跳过白线,这样我开始使用的数组的键就更少了
  2. 如果必须使用array_filter函数。Wich方式更快,最适合内存使用

$array2 = array_values( array_filter($array1));

$array2 = array_values( array_filter($array1));
unset($array1);

如果你想优化内存,你必须读取每一行并对其进行处理

  1. 打开文件
  2. 启动循环
  3. 读取行
  4. 工艺生产线
  5. 保存已处理的数据
  6. 结束循环

使用fopen、fread、fclose php函数。您可以在这里找到一些信息