第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)
関連する問題
- 次のコードの実行結果として正しいものはどれか。 ```php $num = ['zero', 'one', 'three']; $num[3] = 'four'; $num[2] = 'two'; print ('【loop_A】'); for ($i = 0, $count_num = count($num); $i < $count_num; $i++) { print ($num[$i] . ','); } print ('【loop_B】'); foreach ($num as $i => $n) { print ($i . ','); } ```
- PHPの条件分岐に関する次の記述のうち、誤っているものはどれか。
- 次のコードの実行結果として正しいものはどれか。 ```php $i = 1; while ($i <= 5) { print $i; $i++; } ```
- PHPのループ制御に関する次の記述のうち、正しいものはどれか。
- PHPの条件分岐に関する次の記述のうち、正しいものはどれか。