## goto

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

この画像は » xkcd から提供いただいたものです。

`goto` 演算子を使用すると、 プログラム中の他の命令にジャンプすることができます。 ジャンプ先はラベルとコロンで表し、 `goto` の後にそのラベルを指定します。 ラベルは大文字小文字を 区別します。 これは、完全に制約のない `goto` というわけではありません。 対象となるラベルは同じファイル上の同じコンテキストになければなりません。 つまり、関数やメソッドの外に飛び出したり 関数やメソッドの中に突入したりすることはできないということです。 また、いかなるループや switch 構造の中にも突入することができません。 逆にループや switch 構造から抜け出すことはできます。一般的な用法としては、 `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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open