概要
- 関数定義時に引数のデフォルト値を指定することができる
- デフォルト値を指定した引数は、関数呼び出し時に省略することができる
- 関数呼び出し時に指定された引数は、定義された引数の順番に充てられる
- PHP8.0以降は名前付きを使うことができるため、必要な引数のみ値をセットできる
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function dices(int $dices, int $trials=5, string $separator=',') { for ($i = 0; $i < $dices; $i++) { echo random_int(1, 6); for ($j = 1; $j < $trials; $j++) { echo $separator . random_int(1, 6); } echo PHP_EOL; } } dices(2, 5, ','); // 2,4,5,3,5 // 2,5,5,1,2 dices(2); // 4,3,4,1,1 // 2,1,3,6,4 dices(2, ','); // TypeError: Argument 2 passed to dices() must be of the type int, string given |
最後の関数呼び出しでは、int $dices
に2
を、int $trials
に','
をセットすることになるので、2つ目の引数の型が合わずにエラーとなる。
2つ目の引数$trials
の型指定をしていなければ、','
は数値表現ではないので0
とみなされ、以下のような結果になる(各試行の際に必ず1度サイコロが降られる)。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function dices(int $dices, $trials=5, string $separator=',') { for ($i = 0; $i < $dices; $i++) { echo random_int(1, 6); for ($j = 1; $j < $trials; $j++) { echo $separator . random_int(1, 6); } echo PHP_EOL; } } dices(2, ','); // 2 // 5 |