You should mention the label can't be a variable
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
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
the problem of goto is that it is a good feature but in a large codebase it reduces the readability of the code . that's all . i try to not use it to think about the person who is going to read after me .
You can use goto to hide large HTML blocks without using echo():
<html><body>
<?php if ($hide_form_and_script) { goto label_1;} ?>
<form action="" method="post">
<!-- some HTML here -->
</form>
<script>
let a='test'; // no need to escape nested quotes as with echo()
// some JavaScript here
</script>
<?php label_1: ?>
</body></html>