O'reilly сделал ошибку: array_reduce
Я изучаю PHP из мультимедийной книги О'Рейли "Программирование на PHP" и наткнулся на это:
function add_up ($running_total, $current_value) {
$running_total += $current_value * $current_value;
return $running_total;
}
$numbers = array(2, 3, 5, 7);
$total = array_reduce($numbers, 'add_up');
echo $total;
Строка array_reduce() делает эти вызовы функций:
add_up(2,3)
add_up(11,5)
add_up(36,7)
// $total is now 87
Но когда я вычисляю, я получаю 85. Я думаю, что это должно написать так:
array_reduce( )
line делает эти вызовы функций:
add_up (0,2);
add_up (4,3);
add_up (13,5);
add_up (38,7);
Поскольку необязательное значение $ initial по умолчанию установлено в NULL
,
mixed array_reduce ( array $input , callable $function [, mixed $initial = NULL ] )
Может ли кто-нибудь с большим знанием объяснить мне, кто не прав и почему?
1 ответ
Решение
Об этом сообщалось в сообщениях об ошибках (хотя и не подтвержденных). Но поскольку вы не единственный, кто это замечает, вы, скорее всего, правы.
{128} Section "Reducing an Array";
Reducing An Array - Example of function calls created by array_reduce();
The array reduce() line makes these function calls:
add_up(2,3)
add_up(13,5)
add_up(38,7)
The correct list of calls should be:
add_up(0,2) // This line is missing in the book
add_up(4,3) // This line is incorrect in the book
add_up(13,5)
add_up(38,7)
[129] first example;
the resulting calls of the second example of array_reduce() should be:
add_up(11, 2)
add_up(15, 3)
add_up(24, 5)
add_up(49, 7)