第6章 ユーザー定義関数 / 第2回 模擬試験
次のコードの実行結果として正しいものはどれか。 ```php function add(int $a, int $b = 10): int { return $a + $b; } print add(5); ```
5
10
15
正解
エラーが発生する
解説
`add(5)`のように第2引数を省略して呼び出すと、関数定義側のデフォルト値`$b = 10`が使われます。したがって`$a + $b`は`5 + 10 = 15`になります。
例:
```
function add(int $a, int $b = 10): int {
return $a + $b;
}
print add(5); // 15
print add(5, 2); // 7(明示的に渡した値が優先される)
```
戻り値の型宣言`: int`により、返す値が`int`型であることも保証されます(`strict_types`が有効でない場合は数値文字列などから自動変換されます)。
(参照: 独習PHP 第4版 第6章 ユーザー定義関数 6.3.1節 引数の既定値 p.279〜280)
関連する問題
- 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の変数のスコープに関する次の記述のうち、正しいものはどれか。