在PHP中合并和求和两个关联数组

时间:2013-11-14 20:55:48

标签: php arrays array-merge

鉴于这两个阵列:

$first=array(
'books'=>1,
'videos'=>5,
'tapes'=>7,
);

$second=array(
'books'=>3,
'videos'=>2,
'radios'=>4,
'rc cars'=>3,
);

我想将它们结合起来,以便我最终得到

$third=array(
'books'=>4,
'videos'=>7,
'tapes'=>7,
'radios'=>4,
'rc cars'=>3,
);

我在这里看到了一个函数:How to sum values of the array of the same key?但它丢失了密钥。

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

function sum_associatve($arrays){
    $sum = array();
    foreach ($arrays as $array) {
        foreach ($array as $key => $value) {
            if (isset($sum[$key])) {
                $sum[$key] += $value;
            } else {
                $sum[$key] = $value;
            }
        }
    } 
    return $sum;
}
$third=sum_associatve(array($first,$second));

答案 1 :(得分:0)

只是为了与众不同......使用func_get_args(),闭包并强制参数为数组:

function sum_associative()
{
    $data = array();
    array_walk($args = func_get_args(), function (array $arg) use (&$data) {
        array_walk($arg, function ($value, $key) use (&$data) {
            if (isset($data[$key])) {
                $data[$key] += $value;
            } else {
                $data[$key] = $value;
            }
        });
    });

    return $data;
}