第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)