4

私はO'reillyのメディアブック「ProgrammingPHP」から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( )行は次の関数呼び出しを行います。

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 ] )

より多くの知識を持った誰かが私に、誰が間違っているのか、そしてその理由を説明できますか?

4

1 に答える 1

6

正誤表で報告されています(確認されていませんが)。しかし、気付くのはあなただけではないので、おそらくあなたは正しいでしょう。

{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)
于 2013-01-17T18:03:25.500 に答える