第6章 ユーザー定義関数 / 第4回 模擬試験
次のコードの実行結果として正しいものはどれか。 ```php function counter() { static $count = 0; $count++; return $count; } print counter() . counter() . counter(); ```
123
正解
111
000
333
解説
`static $count = 0;`は最初の呼び出し時にのみ`0`で初期化され、以降の呼び出しではそれまでの値が保持されたまま`$count++;`が実行されます。
・1回目の呼び出し: `$count`は`0`から`1`になり、`1`を返す。
・2回目の呼び出し: `$count`は`1`から`2`になり、`2`を返す。
・3回目の呼び出し: `$count`は`2`から`3`になり、`3`を返す。
`print`で3回分の戻り値を連結すると`"1" . "2" . "3"`となり、`"123"`が出力されます。
例:
```
function counter() {
static $count = 0;
$count++;
return $count;
}
print counter() . counter() . counter(); // 123
```
(参照: 独習PHP 第4版 第6章 ユーザー定義関数 6.2.3節 静的変数 p.276〜277)
関連する問題
- 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の変数のスコープに関する次の記述のうち、正しいものはどれか。