这可能听起来很简单,但有时它却是很难实现的简单事情。至少我找不到用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等。每个项目包含相同数量的项目,但最后一个文件包含较少的项目,因为我们不知道要拆分的项目总数。
答案 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)
我建议你有一个计数器变量来计算你添加了多少行。每当它达到你的阈值时,你应该对这些数据做一些事情,然后清理阵列并将计数器重置为零。
这也取决于你想要达到的目标。如果你在一半时间内出现内存不足错误,可能是因为每次迭代都会发送一封电子邮件。您可以通过在每个操作后添加延迟(睡眠)来解决它。
希望这会对你有所帮助。