## goto

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

Bild mit freundlicher Genehmigung von » xkcd

Der `goto`-Operator kann benutzt werden, um innerhalb eines Programs zu einer anderen Anweisung zu springen. Die Zielanweisung wird durch einen Zielnamen festgelegt, bei dem die Groß- und Kleinschreibung beachtet werden muss, gefolgt von einem Doppelpunkt, und der `goto`-Anweisung wird der entsprechende Zielname angefügt. Hierbei handelt es sich jedoch nicht um ein vollständig uneingeschränktes `goto`: Die Zielanweisung muss in der selben Datei und im selben Kontext liegen, d. h. dass weder aus einer Funktion oder Methode herausgesprungen werden kann, noch in sie hineingesprungen. Weiterhin kann nicht in eine Schleifen- oder switch-Anweisung hineingesprungen werden. Es ist jedoch möglich aus diesen herauszuspringen, weshalb `goto` häufig als Ersatz für ein mehrstufiges `break` verwendet wird.

Beispiel #1 `goto`-Beispiel

    <?php

    goto a;
    echo 'Foo';

    a:
    echo 'Bar';

    ?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    Bar

Beispiel #2 `goto`-Schleifenbeispiel

    <?php

    for ($i = 0, $j = 50; $i < 100; $i++) {
        while ($j--) {
            if ($j == 17) {
                goto end;
            }
        }
    }
    echo "i = $i";
    end:
    echo 'j hit 17';

    ?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    j hit 17

Beispiel #3 Das wird nicht funktionieren

    <?php

    goto loop;
    for ($i = 0, $j = 50; $i < 100; $i++) {
        while ($j--) {
            loop:
        }
    }
    echo "$i = $i";

    ?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    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