Почему 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
Согласно документации, вы можете попробовать
function multiply($arr){
print_r(array_reduce($arr, function($a, $b){return $a * $b;},1));
}
Вот цитата из этот обсуждение:
Первым параметром для обратного вызова является аккумулятор, в котором эффективный результат эффективно собирается. Если вы укажете начальное значение в $, аккумулятор начнет с этого значения, в противном случае он будет нулевым.
Других решений пока нет …