合并两个含有相同id的对象数组

function merge($arr_a,$arr_b)
{
    $count_b = count ( $arr_b );
    foreach ( $arr_a as $a )
    {
        $flag = 0;
        for($i = 0; $i < $count_b; $i ++)
        {
            if ($a ['id'] == $arr_b [$i] ['id'])
            {
                //相同id就合并
                $arr_b [$i] ['sum'] += $a ['sum'];
                break;
            } else
            {
                //计算标志
                $flag ++;
            }
        }
        //如果标志等于数组b,即为不相同的id,加入数组b
        if ($flag == $count_b)
        {
            $arr_b [] = $a;
        }
    }
    return $arr_b;
}

测试:

$arr_a = array (
        array (
                'id' => 'a',
                'sum' => 10 
        ),
        array (
                'id' => 'c',
                'sum' => 10 
        ),
        array (
                'id' => 'e',
                'sum' => 10 
        ) 
);
$arr_b = array (
        array (
                'id' => 'b',
                'sum' => 1 
        ),
        array (
                'id' => 'a',
                'sum' => 1 
        ),
        array (
                'id' => 'c',
                'sum' => 1 
        ),
        array (
                'id' => 'd',
                'sum' => 1 
        ) 
);

echo '数组a:';
print_r ( $arr_a );
echo '<br>';
echo '数组b:';
print_r ( $arr_b  );
echo '<br>';
echo '返回数组:';
print_r ( merge ( $arr_a, $arr_b ) );

结果:


数组a:Array ( 
        [0] => Array ( [id] => a [sum] => 10 ) 
        [1] => Array ( [id] => c [sum] => 10 ) 
        [2] => Array ( [id] => e [sum] => 10 ) 
)
数组b:Array ( 
        [0] => Array ( [id] => b [sum] => 1 ) 
        [1] => Array ( [id] => a [sum] => 1 ) 
        [2] => Array ( [id] => c [sum] => 1 ) 
        [3] => Array ( [id] => d [sum] => 1 ) 
)
返回数组:Array ( 
        [0] => Array ( [id] => b [sum] => 1 ) 
        [1] => Array ( [id] => a [sum] => 11 ) 
        [2] => Array ( [id] => c [sum] => 11 ) 
        [3] => Array ( [id] => d [sum] => 1 ) 
        [4] => Array ( [id] => e [sum] => 10 ) 
)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值