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

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