第6章 ユーザー定義関数 / 第2回 模擬試験
PHPの関数の引数に関する次の記述のうち、正しいものはどれか。
引数はデフォルトで参照渡しされる。
型宣言(type hint)を使うと、引数の型を制限できる。
正解
デフォルト引数は必須引数より前に記述しなければならない。
可変長引数は1つの関数につき複数個定義できる。
解説
関数の引数に型宣言(type hint、`int`, `string`, `array`, クラス名など)を付けると、渡せる値の型を制限できます。厳密な型チェックを行いたい場合はファイル冒頭で`declare(strict_types=1);`を宣言します。
他の選択肢が誤りである理由は次の通りです。
・PHPの引数はデフォルトでは値渡しです。参照渡しにしたい場合は仮引数名の前に`&`を付ける必要があります。
・デフォルト値を持つ引数(オプション引数)は、デフォルト値を持たない必須引数より「後ろ」に記述する必要があります(先に書くと構文エラーになります)。
・可変長引数(`...$args`)は1つの関数につき1つだけ、かつ引数リストの最後に定義できます。
例:
```
function greet(string $name, int $age = 20): string {
return "{$name} ({$age})";
}
```
(参照: 独習PHP 第4版 第6章 ユーザー定義関数 6.1節/6.3節 p.258〜288)
関連する問題
- 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の変数のスコープに関する次の記述のうち、正しいものはどれか。