第6章 ユーザー定義関数 / 第3回 模擬試験
PHPの可変長引数に関する次の記述のうち、正しいものはどれか。
可変長引数は`...`演算子を使い、関数内では配列として扱われる。
正解
可変長引数は関数の最初の引数としてのみ定義できる。
可変長引数を使うと、関数の呼び出し時に引数の数を指定しなければならない。
可変長引数と通常の引数は同じ関数内で併用できない。
解説
可変長引数(`...$args`のように仮引数名の前に`...`を付ける)を使うと、呼び出し時に渡された任意個数の引数が、関数内では1つの配列としてまとめて受け取れます。
他の選択肢が誤りである理由は次の通りです。
・可変長引数は、引数リストの「最後」に定義する必要があります(最初には置けません。それより前に通常の必須引数を書きます)。
・可変長引数を使う関数を呼び出す際、引数の個数を事前に指定する必要はありません。0個から好きな数だけ渡せます。
・可変長引数は、通常の(固定の)引数と同じ関数内で併用できます。ただし可変長引数は必ず引数リストの最後に1つだけ定義します。
例:
```
function sum(string $label, int ...$nums): string {
return "{$label}: " . array_sum($nums);
}
echo sum('合計', 1, 2, 3); // 合計: 6
```
(参照: 独習PHP 第4版 第6章 ユーザー定義関数 6.3.4節 可変長引数の関数 p.284〜285)
関連する問題
- PHPの関数引数に関する次の記述のうち、誤っているものはどれか。
- 関数に関する次の記述のうち誤っているものはどれか。
- PHPの匿名関数とアロー関数に関する次の記述のうち、正しいものはどれか。
- 次のコードの実行結果として正しいものはどれか。 ```php $val = 'a'; $val = 'b'; print ('【A】' . $val); function func($val = 'c') { $val = 'd'; print ('【B】' . $val); global $val; print ('【C】' . $val); $val = 'e'; print ('【D】' . $val); $val = 'f'; } $val = 'g'; func($val); print ('【E】' . $val); ```
- PHPの変数のスコープに関する次の記述のうち、正しいものはどれか。