第4章 制御構文 / 第4回 模擬試験
PHPの`goto`命令に関する次の記述のうち、正しいものはどれか。
PHPには`goto`命令が存在し、指定したラベルへ処理をジャンプさせることができる。
正解
`goto`命令はPHPでは構文エラーになる。
`goto`命令は関数の外から関数の中へジャンプすることができる。
`goto`命令はループ処理を完全に置き換える推奨構文である。
解説
PHPには`goto`命令が存在し、`goto ラベル名;`と書くことで、対応する`ラベル名:`が置かれた位置へ処理をジャンプさせることができます。
他の選択肢が誤りである理由は次の通りです。
・`goto`命令はPHPで正式にサポートされている構文であり、構文エラーにはなりません。
・`goto`は、関数やメソッドの「内部」でのジャンプにのみ使用でき、関数の外から関数の中へ、あるいは関数の中から外へジャンプすることはできません(そのようなコードは構文エラーになります)。
・`goto`はループ処理を完全に置き換える推奨構文ではありません。多用するとコードの流れが追いにくくなるため、限定的な場面での利用にとどめるのが一般的です(多重ループの脱出には`break N`の方がよく使われます)。
例:
```
for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
if ($i == 1 && $j == 1) {
goto end;
}
}
}
end:
echo 'ここにジャンプ';
```
(参照: 独習PHP 第4版 第4章 制御構文 4.4.1節 goto命令 p.158〜159)
関連する問題
- 次のコードの実行結果として正しいものはどれか。 ```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の条件分岐に関する次の記述のうち、正しいものはどれか。