求和两个数组的最佳方法

12 php arrays sum

我有两个数组:

$a = array(10, 2, 5, 10, 0);
$b = array(1, 20, 11, 8, 3);
Run Code Online (Sandbox Code Playgroud)

我需要总结并得到结果:

$c = array(11, 22, 16, 18, 3);
Run Code Online (Sandbox Code Playgroud)

关于如何没有"foreach"的任何建议?

Phi*_*ipp 28

一个简单的方法可能是

$c = array_map(function () {
    return array_sum(func_get_args());
}, $a, $b);

print_r($c);
Run Code Online (Sandbox Code Playgroud)

或者如果你可以使用PHP5.6,你也可以使用像这样的可变参数函数

$c = array_map(function (...$arrays) {
    return array_sum($arrays);
}, $a, $b);

print_r($c);
Run Code Online (Sandbox Code Playgroud)

产量

Array
(
    [0] => 11
    [1] => 22
    [2] => 16
    [3] => 18
    [4] => 3
)
Run Code Online (Sandbox Code Playgroud)

  • 第二种方法不需要PHP 7.自PHP 5.6起,可以使用参数解包(http://php.net/manual/en/migration56.new-features.php#migration56.new-features.splat). (2认同)

Gau*_*164 11

试试吧

$c = array();
foreach (array_keys($a + $b) as $key) {
    $c[$key] = $a[$key] + $b[$key];
}
Run Code Online (Sandbox Code Playgroud)


use*_*620 7

没有你所要求的"foreach",你无法做到这一点,你需要在两个数组上循环以获得相应的值.

使用foreach的函数是:

function sum_arrays($array1, $array2) {
    $array = array();
    foreach($array1 as $index => $value) {
        $array[$index] = isset($array2[$index]) ? $array2[$index] + $value : $value;
    }
    return $array;
}
Run Code Online (Sandbox Code Playgroud)

现在你只需要做:

$c = sum_arrays($a, $b);
Run Code Online (Sandbox Code Playgroud)