function sum(...$numbers)
{
$total = 0;
foreach ($numbers as $number) {
$total += $number;
}
return $total;
}
sumの仮引数は ...$numbers になっていますがこれは $numbers という配列がきたら展開して引数にしますよと言う意味に感じます。そして関数内では
$numbers as $number
となっていることから実は展開せずに配列そのもので利用しています。ですが関数実行の実引数は
echo sum(1, 2, 3, 4, 6) . PHP_EOL;
のように個々の数字を渡しています。もし$numbers が配列を想定しているなら
echo sum([1, 2, 3, 4, 6]) . PHP_EOL;
のように渡すべではないでしょうか?やってみるとエラーになりますし
echo sum(...[1, 2, 3, 4, 6]) . PHP_EOL;
$q = [1, 2, 3, 4, 6, 9];
echo sum(...$q) . PHP_EOL;
ではうまくいくのでやはり配列ではなく複数のコンマ区切りの数字のようです。この辺の挙動が理解に苦しみます。噛み砕いて教えて下さい。よろしく願いします。
この回答を見るにはプレミアムプランへの登録が必要です
プレミアムプランとは?