【週刊ドットインストール】 『データで学ぶアルゴリズム Level 1-2』を運営中、Level 1-2も来週リリース予定!
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;
ではうまくいくのでやはり配列ではなく複数のコンマ区切りの数字のようです。この辺の挙動が理解に苦しみます。噛み砕いて教えて下さい。よろしく願いします。
ドットインストールは、3分動画でマスターできるプログラミング学習サービスです。
3分で気軽に学習でき、スマートフォンからも視聴可能です。ホームページやWebサービスの制作を通して、実践的にプログラミングを学べます。
他にも、ゲーム制作やデータ分析・機械学習・AIに使われる言語まで幅広くカバー。学びたい分野のレッスンがきっと見つかります。
この回答を見るにはプレミアムプランへの登録が必要です
sumの仮引数は ...$numbers になっていますがこれは $numbers という配列がきたら展開して引数にしますよと言う意味に感じます。そして関数内では
となっていることから実は展開せずに配列そのもので利用しています。ですが関数実行の実引数は
のように個々の数字を渡しています。もし$numbers が配列を想定しているなら
のように渡すべではないでしょうか?やってみるとエラーになりますし
ではうまくいくのでやはり配列ではなく複数のコンマ区切りの数字のようです。この辺の挙動が理解に苦しみます。噛み砕いて教えて下さい。よろしく願いします。