php二维数组,相同值求和,并返回新的数组

2025-03-31 14:22:49
推荐回答(2个)
回答1:

$old_arr = array(
    array(1,107,100,83,44,111),
    array(100,109,126,86,93,22),
    array(10,113,126,86,93,22),
    array(100,109,126,86,93,22),
);

$new_arr = array(0,0,0,0,0,0);

foreach($old_arr as $arr){
    for ($i = 0; $i < 6; $i++) {
        $new_arr[$i]+=$arr[$i];
    }
}

var_dump($new_arr);

?>

截图如下:

回答2:

$arr=array(
25 => Array ( 0 => 1, 1 => 107, 2 => 100, 3 => 83, 4 => 44 ,5 => 111 ),
26 => Array ( 0 => 100, 1 => 109 ,2 => 126, 3 => 86, 4 => 93, 5 => 22),
27 => Array ( 0 => 10 ,1 => 113, 2 => 70, 3 => 57, 4 => 61, 5 => 44) ,
28 => Array ( 0 => 110, 1 => 66, 2 => 36, 3 => 41, 4 => 25, 5 => 45 )
);

$res_arr=array(); //结果数据 key 为 1 107 等值 ,value 为加和
$key_arr=array(); // value为 $res_arr 所有key

foreach($arr as $value){
foreach($value as $v){
if(in_array($v, $key_arr)){
$res_arr[$v]=$v+$res_arr[$v];
}else{
$res_arr[$v]=$v;
$key_arr[]=$v;
}

}
}

var_dump($res_arr);

/*
结果:
array
1 => int 1
107 => int 107
100 => int 200 //出现2次
83 => int 83
44 => int 88 //出现2次
111 => int 111
109 => int 109
126 => int 126
86 => int 86
93 => int 93
22 => int 22
10 => int 10
113 => int 113
70 => int 70
57 => int 57
61 => int 61
110 => int 110
66 => int 66
36 => int 36
41 => int 41
25 => int 25
45 => int 45
*/

;