PHP中的数组求和


Summing arrays in PHP?

想象一下以下两个数组:

$array1 = array('dogs' => 3, 'cats' => 5);
$array2 = array('dogs' => 2, 'cats' => 7);

是否有一个原生的php5.5函数,或任何最佳解决方案来获得以下结果?

$result = array('dogs' => 5, 'cats' => 12);

答案是肯定的。但你必须为此编写一个自定义函数。约拿对此给出了很好的回答。

这里是一个数字数组的解决方案。

对于关联阵列:

$sum = array_combine(array_keys($array1), array_map('bcadd', $array1, $array2));

bcadd可以避免创建自己的添加函数)

我认为您最好编写自己的多维求和解决方案:

<?php
function sumEach($original, $array) {
    foreach($array as $key => $value) {
        if(!array_key_exists($key, $original))
            $original[$key] = $value;
        else
            $original[$key] += $value;
    }
    return $original;
}
$totals = array();
$totals = sumEach($totals, $array1);
$totals = sumEach($totals, $array2);
?>

然后$totals的输出将看起来像:

Array(
    'dogs' => 5,
    'cats' => 12
);

下面是一个演示:https://eval.in/73948