【发布时间】:2011-02-28 11:19:43
【问题描述】:
我一直在尝试比较两个数组。使用 array_intersect 没有问题。当使用 array_diff 和具有 ~5,000 个值的数组时,它可以工作。当我达到约 10,000 个值时,当我到达 array_diff 时脚本就会死掉。开启 error_reporting 并没有产生任何结果。
我尝试创建自己的 array_diff 函数:
function manual_array_diff($arraya, $arrayb) {
foreach ($arraya as $keya => $valuea) {
if (in_array($valuea, $arrayb)) {
unset($arraya[$keya]);
}
}
return $arraya;
}
我希望它比官方的 array_diff 效率低,但它可以处理约 10,000 个数组。不幸的是,当我达到 ~15,000 时,两个 array_diffs 都失败了。
我在另一台机器上尝试了相同的代码,它运行良好,所以这不是代码或 PHP 的问题。该特定服务器上的某处必须设置一些限制。知道如何绕过这个限制或改变它,或者只是找出它是什么?
【问题讨论】:
-
你用什么数据测试过?
-
可能是因为这个算法是O(N^2)。
-
你是在浏览器还是命令行中运行这个?
-
数据是一堆ID。在浏览器中运行它。
标签: php