php两个二维数组根据某个字段相同重新组成新的数组

这里,我要实现的是两个二维数组,根据某一个字段相同,将其他的数据相加

数组一:

$data1 = array( 
		   0=>array( "days"=>"2018-10-11","IOS"=>"3", "Android"=>"92"),
		   1=>array( "days"=>"2018-10-10", "IOS"=>"103" ,"Android"=>"569" ),
		   2=>array( "days"=>"2018-10-09" ,"IOS"=>"234", "Android"=>"568" ) ,
		   3=>array( "days"=> "2018-10-08" ,"IOS"=> "222" ,"Android"=> "548" ) ,
		   4=>array( "days"=> "2018-10-07" ,"IOS"=> "230" ,"Android"=> "736" ) ,
		   5=>array( "days"=> "2018-10-06" ,"IOS"=> "656", "Android"=> "885" ) ,
		   6=>array( "days"=> "2018-10-05" ,"IOS"=> "333" ,"Android"=> "894" ) ,
	);

数组二:

$data2 = array( 
		   0=>array("days"=> "2018-10-10","IOS"=> "1","Android"=> "2") ,
		   1=>array("days"=> "2018-10-09" ,"IOS"=> "5" ,"Android"=> "5" ) ,
		   2=>array("days"=> "2018-10-08" ,"IOS"=> "2" ,"Android"=> "4" ) ,
		   3=>array("days"=> "2018-10-07" ,"IOS"=> "2" ,"Android"=> "10" ) ,
		   4=>array("days"=> "2018-10-06" ,"IOS"=> "8" ,"Android"=> "14" ) ,
		   5=>array("days"=> "2018-10-05" ,"IOS"=> "2" ,"Android"=> "16" ) ,
	);

根据days相同将IOS和Android分别相加

我们先将两个数组合并:

$data = array_merge($data1,$data2);

结果:

Array
(
    [0] => Array
        (
            [days] => 2018-10-11
            [IOS] => 3
            [Android] => 92
        )

    [1] => Array
        (
            [days] => 2018-10-10
            [IOS] => 103
            [Android] => 569
        )

    [2] => Array
        (
            [days] => 2018-10-09
            [IOS] => 234
            [Android] => 568
        )

    [3] => Array
        (
            [days] => 2018-10-08
            [IOS] => 222
            [Android] => 548
        )

    [4] => Array
        (
            [days] => 2018-10-07
            [IOS] => 230
            [Android] => 736
        )

    [5] => Array
        (
            [days] => 2018-10-06
            [IOS] => 656
            [Android] => 885
        )

    [6] => Array
        (
            [days] => 2018-10-05
            [IOS] => 333
            [Android] => 894
        )

    [7] => Array
        (
            [days] => 2018-10-10
            [IOS] => 1
            [Android] => 2
        )

    [8] => Array
        (
            [days] => 2018-10-09
            [IOS] => 5
            [Android] => 5
        )

    [9] => Array
        (
            [days] => 2018-10-08
            [IOS] => 2
            [Android] => 4
        )

    [10] => Array
        (
            [days] => 2018-10-07
            [IOS] => 2
            [Android] => 10
        )

    [11] => Array
        (
            [days] => 2018-10-06
            [IOS] => 8
            [Android] => 14
        )

    [12] => Array
        (
            [days] => 2018-10-05
            [IOS] => 2
            [Android] => 16
        )

)

再对这个合并后的数组进行处理

$newdata = [];
foreach($data as $k=>$v){
    if(!isset($newdata[$v['days']])){
        $newdata[$v['days']] = $v;
    }else{
        $newdata[$v['days']]['IOS'] += $v['IOS'];
        $newdata[$v['days']]['Android'] += $v['Android'];
    }
}

结果:打印  p(array_values($newdata));

Array
(
    [0] => Array
        (
            [days] => 2018-10-11
            [IOS] => 3
            [Android] => 92
        )

    [1] => Array
        (
            [days] => 2018-10-10
            [IOS] => 104
            [Android] => 571
        )

    [2] => Array
        (
            [days] => 2018-10-09
            [IOS] => 239
            [Android] => 573
        )

    [3] => Array
        (
            [days] => 2018-10-08
            [IOS] => 224
            [Android] => 552
        )

    [4] => Array
        (
            [days] => 2018-10-07
            [IOS] => 232
            [Android] => 746
        )

    [5] => Array
        (
            [days] => 2018-10-06
            [IOS] => 664
            [Android] => 899
        )

    [6] => Array
        (
            [days] => 2018-10-05
            [IOS] => 335
            [Android] => 910
        )

)

 

这个就是我们想要的数组

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值