4

为什么array_reduce()加法和乘法时该方法的工作方式不同?当我在下面添加数组值时,代码会产生预期的结果:15。但是当我相乘时,它返回:0。相同的代码...唯一的区别是+符号为符号切换*

  function sum($arr){
        print_r(array_reduce($arr, function($a, $b){return $a + $b;}));
    }

    function multiply($arr){
        print_r(array_reduce($arr, function($a, $b){return $a * $b;}));
    }

    sum(array(1, 2, 3, 4, 5)); // 15
    multiply(array(1, 2, 3, 4, 5)); // 0
4

1 回答 1

5

根据文档,您可能想尝试

function multiply($arr){
        print_r(array_reduce($arr, function($a, $b){return $a * $b;},1));
}

这是此讨论的引述:

回调的第一个参数是一个累加器,其中有效地组装了正在进行的结果。如果您提供 $initial 值,则累加器以该值开始,否则以 null 开始。

于 2015-06-01T04:45:08.717 回答