0

我有 7 个对象数组。每个对象都包含数据。我需要将这些数组合并在一起,我这样做:

$arrayTotal = $array1;
$arrayTotal = array_merge($arrayTotal,$array2)
$arrayTotal = array_merge($arrayTotal,$array3)
$arrayTotal = array_merge($arrayTotal,$array4)
...

一切都很好,直到我的总数组有 700 个项目(每个子数组有 100 个项目)。Apache 停止响应,我认为是因为内存问题,因为有这么多的大数组。我在第 4 次或第 5 次合并时遇到了问题。

合并它们并避免错误的最佳方法是什么?

更新:

[Sat Sep 15 10:17:36 2012] [notice] Apache/2.2.21 (Win32) PHP/5.3.9 configured -- resuming normal operations
[Sat Sep 15 10:17:36 2012] [notice] Server built: Sep 10 2011 11:34:11
[Sat Sep 15 10:17:36 2012] [notice] Parent: Created child process 3908
[Sat Sep 15 10:17:36 2012] [notice] Child 3908: Child process is running
[Sat Sep 15 10:17:36 2012] [notice] Child 3908: Acquired the start mutex.
[Sat Sep 15 10:17:36 2012] [notice] Child 3908: Starting 64 worker threads.
[Sat Sep 15 10:17:36 2012] [notice] Child 3908: Starting thread to listen on port 8080.
[Sat Sep 15 10:17:53 2012] [notice] Parent: child process exited with status 3221225477 -- Restarting.

这是我的 apache 错误日志。我确实找到了一些将文件复制到我的 system32 文件夹的解决方案,但它们没有用

4

3 回答 3

8

array_merge可以接受无限数量的参数,因此您可以将它们全部放在一个函数调用中:

$arrayTotal = array_merge($array1,$array2,$array3...);

这应该可以解决问题,因为我过去使用过包含数千个项目的数组,没有任何问题。

于 2012-09-14T20:46:07.017 回答
3

使用 + 比使用 array_merge 更优化

像这样写,它更快,使用更少的资源,这似乎你有问题

$arrayTotal = $array1 + $array2 + $array3 + $array4; //add as much as you need :)

注意:感谢@ficuscr,来自 php array_merge 页面,值得关注的真正重要的事情是

如果要将第二个数组中的数组元素附加到第一个数组,同时不覆盖第一个数组中的元素并且不重新索引,请使用 + 数组联合运算符

简而言之,如果您只想添加内容,而不关心重复项,请使用 +

于 2012-09-14T20:49:02.263 回答
0

问题不在 array_merge 中,而是在我对外部文件所做的 curl 中。我看到文件对于 curl 来说太大了,然后我们遇到了内存问题,增加了 php.ini 中的内存并没有解决问题

于 2012-09-15T14:44:38.050 回答