数组统计问题

kissdp 2010-10-28 04:09:42
项目中遇到问题,需要将一个N维数组的最下层做一下统计, 然后上层依次做统计. 举个例子:

//已知数组
$array = array(
'aaa' => array(
'bbb' => array(
'ccc' => array(
'totalnum' => 10
),
'ddd' => array(
'totalnum' => 20
)
),
'eee' => array(
'fff' => array(
'totalnum' => 100
)
)
),
'ggg' => array(
'hhh' => array(
'iii' => array(
'totalnum' => 38
)
)
)
);
/**
需要的结果:

Array
(
[aaa] => Array
(
[bbb] => Array
(
[ccc] => Array
(
[totalnum] => 10
)

[ddd] => Array
(
[totalnum] => 20
)
[totalnum] => 30
)
[eee] => Array
(
[fff] => Array
(
[totalnum] => 100
)

[totalnum] => 100
)
[totalnum] => 130
)
[ggg] => Array
(
[hhh] => Array
(
[iii] => Array
(
[totalnum] => 38
)
[totalnum] => 38
)
[totalnum] => 38
)
[totalnum] => 168
)

*/

//鄙人写的函数可以实现, 不过很烂, 而且因为在正式环境下数组比较大, 循环执行报错(Fatal error: Maximum function nesting level of '100' reached), 拿上来献丑了
function compute(&$array) {
foreach($array as $key => $value) {
if($value['totalnum']) {
$array['totalnum'] += $value['totalnum'];
} elseif(is_array($value)) {
compute($array[$key]);
}
}

if(empty($array['totalnum'])) {
compute($array);
}
}

compute($array);



大家帮忙写个比较好的函数, 或者指点一下小弟上边的函数怎么改

补充, 实际应用不单单统计每项的和, 还有百分比什么的, 例子只是为了看起来简单
...全文
134 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxs_2008 2010-11-01
  • 打赏
  • 举报
回复
up 一下,等高人
kissdp 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fxs_2008 的回复:]

按理四层深度只要递归4层,递归应是没有问题的.

内存限制可能有,可以取消递归的200限制.

或者看看能不能优化一下.
[/Quote]

谢谢, 我总感觉我写的函数有问题, 就是不知道该怎么改, 郁闷.. 顶上去再等...
fxs_2008 2010-10-28
  • 打赏
  • 举报
回复
按理四层深度只要递归4层,递归应是没有问题的.

内存限制可能有,可以取消递归的200限制.

或者看看能不能优化一下.
kissdp 2010-10-28
  • 打赏
  • 举报
回复
大家帮帮忙啊, 应该有其他比较好的算法吧!
kissdp 2010-10-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 amani11 的回复:]

你这数组,预计极值有多少深度?

提示的意思,递归层数超出100
[/Quote]

不是很深, 实际用到4层就够了
amani11 2010-10-28
  • 打赏
  • 举报
回复
你这数组,预计极值有多少深度?

提示的意思,递归层数超出100

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧