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