两个有关联的数组,如何合并成一个数组 array_walk function() use() 的使用

思路
第一步:我们先将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
        )

)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值