この画像は » xkcd から提供いただいたものです。
goto 演算子を使用すると、 プログラム中の他の命令にジャンプすることができます。 ジャンプ先はラベルとコロンで表し、 goto の後にそのラベルを指定します。 ラベルは大文字小文字を 区別します。 これは、完全に制約のない goto というわけではありません。 対象となるラベルは同じファイル上の同じコンテキストになければなりません。 つまり、関数やメソッドの外に飛び出したり 関数やメソッドの中に突入したりすることはできないということです。 また、いかなるループや switch 構造の中にも突入することができません。 逆にループや switch 構造から抜け出すことはできます。一般的な用法としては、 goto を複数レベルの break として使うものがあります。
goto
break
例1 goto の例
<?php goto a; echo 'Foo'; a: echo 'Bar'; ?>
上の例の出力は以下となります。
Bar
例2 ループでの goto の例
<?php for ($i = 0, $j = 50; $i < 100; $i++) { while ($j--) { if ($j == 17) { goto end; } } } echo "i = $i"; end: echo 'j hit 17'; ?>
j hit 17
例3 これは動作しません
<?php goto loop; for ($i = 0, $j = 50; $i < 100; $i++) { while ($j--) { loop: } } echo "$i = $i"; ?>
Fatal error: 'goto' into loop or switch statement is disallowed in script on line 2