思路
第一步:我们先将array2中name取出,生成一个新数组(使用array_colum函数)
第二步:将新数组做为键,array2数组做为值,使用array_combine合并成一个新数组
第三步:使用array_walk或foreach 循环处理数值
function use() 匿名函数,use是引用外部变量
代码
$array1=array(
"英雄联盟"=>array(
"name"=>"英雄联盟",
"money"=>100,
"pay"=>200
),
"地下城与勇士"=>array(
"name"=>"地下城与勇士",
"money"=>500,
"pay"=>100
)
);
$array2=array(
"0"=>array(
"name"=>"英雄联盟",
"money"=>400,
"pay"=>300
),
"1"=>array(
"name"=>"地下城与勇士",
"money"=>150,
"pay"=>600
)
);
$array3=array_combine(array_column($array2,"name"),$array2);
array_walk($array1,function($v,$k) use(&$array3){
array_walk_recursive($v,function($val,$key) use (&$array3,$k){
if($key!='name'){
$array3[$k][$key]+=$val;
}
});
});
print_r($array3);
结果:
Array
(
[英雄联盟] => Array
(
[name] => 英雄联盟
[money] => 500
[pay] => 500
)
[地下城与勇士] => Array
(
[name] => 地下城与勇士
[money] => 650
[pay] => 700
)
)