- array_reduce: documentation ( source)
- print_r: documentation ( source)
- array_walk: documentation ( source)
<?php
$A = array(
'Z'=>array('d'=>array(
'v1'=>10,
'v2'=>20,
'v3'=>30
)
),
'A'=>array('a'=>array(
'v1'=>1,
'v2'=>2,
'v3'=>3
),
'b'=>array(
'v1'=>1,
'v2'=>2,
'v3'=>3
)
),
'B'=>array('a'=>array(
'v1'=>1,
'v2'=>2,
'v3'=>3
),
'b'=>array(
'v1'=>1,
'v2'=>2,
'v3'=>3
)
),
'C'=>array('a'=>array(
'v1'=>9,
'v2'=>8,
'v3'=>7
),
'b'=>array(
'v1'=>6,
'v2'=>5,
'v3'=>4
)
)
);
$total=array_reduce($A,function(&$r,$v){
array_walk($v,function($val,$key)use(&$r){
if(!isset($r[$key])) $r[$key]=array();
array_walk($val,function($vv,$vk)use(&$r,$key){
if(!isset($r[$key][$vk])) $r[$key][$vk]=0;
$r[$key][$vk]+=$vv;
});
});
return $r;
},array());
print_r($total);