第4章 制御構文 / 第1回 模擬試験
PHPのループ制御に関する次の記述のうち、正しいものはどれか。
`break`文は、現在のループの残りの処理をスキップし、次のイテレーションに進む。
`continue`文は、現在のループを完全に終了する。
入れ子のループで`break 2;`と記述すると、2つ外側のループを終了する。
正解
`goto`文はPHPではサポートされていない。
解説
`break N;`のように数値を指定すると、指定した数だけ外側のループ(自分自身を含む)を一度に終了できます。`break 2;`と書けば、現在のループとその外側のループ、合わせて2重分のループを終了します。
他の選択肢が誤りである理由は次の通りです。
・`break`文はループ処理そのものを終了し、ループの外側に処理を移します。「残りの処理をスキップして次のイテレーションに進む」のは`continue`の説明です。
・`continue`文は現在のイテレーション(1周分)の残りをスキップし、次のイテレーションに進みます。ループ自体を完全に終了するわけではありません。
・PHPは`goto`文をサポートしています(多用は推奨されませんが、エラーハンドリングの一括処理などで使われることがあります)。
例:
```
for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
if ($j === 1) {
break 2; // 外側のforループごと終了
}
echo "$i-$j ";
}
}
// 出力: 0-0
```
(参照: 独習PHP 第4版 第4章 制御構文 4.3節 p.153〜157)
関連する問題
- 次のコードの実行結果として正しいものはどれか。 ```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 for ($i = 0; $i < 5; $i++) { if ($i == 2) { continue; } if ($i == 4) { break; } print $i; } ```