第4章 制御構文 / 第2回 模擬試験

PHPのforeach文に関する次の記述のうち、誤っているものはどれか。

`foreach ($arr as $key => $value)`でキーと値を同時に取得できる。
`foreach`の値を参照渡し(`as &$value`)にすると、元の配列を直接変更できる。
`foreach`は連想配列に対しては使用できない。 正解
`foreach`はループ変数を自分でインクリメントする必要がない。
解説
`foreach`は数値添字配列だけでなく、連想配列に対しても問題なく使用できます。「連想配列に対しては使用できない」という記述は誤りです。 他の選択肢が正しい理由は次の通りです。 ・`foreach ($arr as $key => $value)`の形式で、要素のキーと値を同時に取り出せます。 ・`foreach ($arr as &$value)`のように値を参照渡しにすると、ループ内での`$value`への変更が元の配列にも反映されます(ループ終了後は`unset($value)`で参照を解除するのが安全です)。 ・`foreach`は配列の要素数分だけ自動的に繰り返されるため、`for`文のようにループ変数を自分でインクリメントする必要がありません。 例: ``` $user = ['name' => 'Taro', 'age' => 20]; foreach ($user as $key => $value) { echo "$key: $value "; } ``` (参照: 独習PHP 第4版 第4章 制御構文 4.2.5節 foreach命令 p.147〜152)

あわせて読みたい解説記事