21,887
社区成员
发帖
与我相关
我的任务
分享
//已知数组
$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);