如何在PHP中合并大型数组?

如何在PHP中合并大型数组?,php,arrays,Php,Arrays,我有7个对象数组。每个对象都包含数据。我需要将这些阵列合并在一起,并使用以下方法进行合并: $arrayTotal = $array1; $arrayTotal = array_merge($arrayTotal,$array2) $arrayTotal = array_merge($arrayTotal,$array3) $arrayTotal = array_merge($arrayTotal,$array4) ... 这一切都很好,直到我有了大约700个项目的总数组(每个子数组有100个

我有7个对象数组。每个对象都包含数据。我需要将这些阵列合并在一起,并使用以下方法进行合并:

$arrayTotal = $array1;
$arrayTotal = array_merge($arrayTotal,$array2)
$arrayTotal = array_merge($arrayTotal,$array3)
$arrayTotal = array_merge($arrayTotal,$array4)
...
这一切都很好,直到我有了大约700个项目的总数组(每个子数组有100个项目)。Apache停止响应,我想是因为内存问题,因为太多的大型阵列。我在第四次或第五次合并时遇到了问题

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

更新:

[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文件夹的解决方案,但它们不起作用

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

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

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

使用+比使用数组合并更优化

这样写,速度更快,使用的资源更少,这似乎是你的问题

$arrayTotal = $array1 + $array2 + $array3 + $array4; //add as much as you need :)
注意:多亏了php中的@ficuscr,一件真正重要的事情值得关注

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


简而言之,如果您只想添加内容,而不考虑重复项,那么使用+

问题不在于数组合并,而在于我对外部文件所做的卷曲。在我看来,文件对于curl来说太大了,然后我们出现了内存问题,php.ini中的内存增加并没有解决这个问题

这个页面侧面的“相关”栏让我很伤心。为什么不使用array\u merge\u recursive@Brendan Long我想你没有读到我的问题@FirmView Tested和相同的错误我有两个问题。首先,这7个顺序调用是否是对array\u merge的调用?第二,在不合并阵列的情况下,有什么方法可以让它对您有效吗?我确实解决了这个问题,合并并没有出错根据我的经验,两者之间没有太大区别。但话说回来,这只是我的经验-我没有对这两个选项进行基准测试…使用array\u merge不会返回与array+array相同的结果。“如果您想将第二个数组中的数组元素附加到第一个数组,同时不覆盖第一个数组中的元素,也不重新编制索引,请使用+数组联合运算符”。@ficuscr您是对的,但毕竟我们不知道海报的真正需要,他有两种解决方案可供选择:),他可能只需要附加,或者合并内容,以防内容被覆盖,我会编辑我的答案添加这个我用+测试过的内容,同样的问题“Apache HTTP服务器已停止工作”@gogic1fdsfs Locate and comment out“error\u log=“lines in php.ini,然后测试againAlso,
$arrayTotal=call\u user\u func\u array('array\u merge',$arrayofarrays)我再次遇到同样的问题,试图在“ApacheHTTP服务器已停止工作”的同时对所有阵列进行marge