批量拆分列表

时间:2018-02-04 11:04:21

标签: php

这可能听起来很简单,但有时它却是很难实现的简单事情。至少我找不到用PHP干净的方法,我搜索了不同的函数。

我有一个从文件中读取的项目列表。例如:

foreach(file('items.txt') as $line) {
// Do something here with $line;
}

假设此文本列表(逐行读取)具有特定数量的项目,50或10,000或9,444,我如何将它们拆分为较小的批次?

例如,将它们分成100个批次。我基本上想要读取items.txt并将项目写入较小的文件,例如items1.txt,items2.txt,items3.txt等。每个项目包含相同数量的项目,但最后一个文件包含较少的项目,因为我们不知道要拆分的项目总数。

2 个答案:

答案 0 :(得分:3)

您可以使用array_chunk()自动将行数组拆分为特定大小的子数组。

实施例

$chunks = array_chunk(file('items.txt'), 100);
foreach ($chunks as $chunk) {
   foreach($chunk as $line) {
   // Do something here with $line;
   }
}

答案 1 :(得分:0)

我建议你有一个计数器变量来计算你添加了多少行。每当它达到你的阈值时,你应该对这些数据做一些事情,然后清理阵列并将计数器重置为零。

这也取决于你想要达到的目标。如果你在一半时间内出现内存不足错误,可能是因为每次迭代都会发送一封电子邮件。您可以通过在每个操作后添加延迟(睡眠)来解决它。

希望这会对你有所帮助。