Умножение индексов массивов в 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

4

Решение

Согласно документации, вы можете попробовать

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

Вот цитата из этот обсуждение:

Первым параметром для обратного вызова является аккумулятор, в котором эффективный результат эффективно собирается. Если вы укажете начальное значение в $, аккумулятор начнет с этого значения, в противном случае он будет нулевым.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]