【发布时间】:2020-09-07 09:35:05
【问题描述】:
我有一个 2 元素数组的排序数组,如下所示:
array(
array('id' => 1734, 'count' => 14),
array('id' => 1734, 'count' => 7),
array('id' => 9374, 'count' => 5),
array('id' => 9374, 'count' => 253)
);
数组按内部数组的“id”字段排序。目标是将其减少到以下内容:
array(
array('id' => 1734, 'count' => 21),
array('id' => 9374', 'count' => 258)
);
即为每个唯一的“id”聚合/求和“count”元素。
我在函数 myfunc(array $arr){...} 中遍历数组,该函数执行 array_shift($arr),然后调用 myfunc($arr)。它还对递归的基本情况(一个空数组)进行了适当的检查,并且应该在此时终止。
问题是我有数以万计的内部数组,PHP 抛出“PHP 致命错误:未捕获的错误:达到 '256' 的最大函数嵌套级别,正在中止!”。
在仔细检查代码并运行调试会话后,我发现 $arr 确实减少了每次调用的大小,所以我认为问题仅在于最大函数嵌套设置。然而,在我看来,将此设置更改为 100 万左右是不切实际的。那么,我们还有什么其他的解决方案呢?
【问题讨论】:
-
此数据是否来自数据库?也许您可以在原点进行操作。