如何合并两个2D php数组,而我想添加一些值?

时间:2011-12-01 05:26:07

标签: php arrays cakephp multidimensional-array merge

我有两个这样的php数组:

Array
(
[0] => Array
    (
        [id] => 712
        [count] => 5
    )

[1] => Array
    (
        [id] => 5510
        [count] => 3
    )
)

Array
(
[0] => Array
    (
        [id] => 856
        [count] => 7
    )

[1] => Array
    (
        [id] => 5510
        [count] => 10
    )
)  

现在我想像这样制作合并结果:

Array
(
[0] => Array
    (
        [id] => 712
        [count] => 5
    )

[1] => Array
    (
        [id] => 856
        [count] => 3
    )
[2] => Array
    (
        [id] => 5510
        [count] => 13
    )
)  

只需添加count具有相同id的人。{ 当然,真实数组比上面的例子复杂得多。

你能告诉我一个解决这个问题的方法吗?

1 个答案:

答案 0 :(得分:1)

这应该对你有用

/**
 * merge counts for arrays
 * @param array $arrays,...
 * @return array
 */
function merge_counts(){

    $arrays = func_get_args();

    $ret = array();

    foreach($arrays as $arr){
        foreach($arr as $item){
            if(array_key_exists($k = $item['id'], $ret)){
                $ret[$k]['count'] += $item['count'];
            }
            else {
                $ret[$k] = $item;
            }
        }
    }

    return array_values($ret);   
}

用法

$result = merge_counts($one, $two);    
print_r($result);

// alternatively...
// $result = merge_counts($one, $two, $three, ...);

输出

Array
(
    [0] => Array
        (
            [id] => 712
            [count] => 5
        )

    [1] => Array
        (
            [id] => 5510
            [count] => 13
        )

    [2] => Array
        (
            [id] => 856
            [count] => 7
        )

)