You should mention the label can't be a variable(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Image courtesy of » xkcd
The goto operator can be used to jump to another
section in the program. The target point is specified by a case-sensitive label
followed by a colon, and the instruction is given as
goto followed by the desired target label. This
is not a full unrestricted goto. The target
label must be within the same file and context, meaning that you cannot jump
out of a function or method, nor can you jump into one. You also
cannot jump into any sort of loop or switch structure. You may jump
out of these, and a common use is to use a goto
in place of a multi-level break.
Example #1 goto example
<?php
goto a;
echo 'Foo';
a:
echo 'Bar';
?>The above example will output:
Bar
Example #2 goto loop example
<?php
for ($i = 0, $j = 50; $i < 100; $i++) {
while ($j--) {
if ($j == 17) {
goto end;
}
}
}
echo "i = $i";
end:
echo 'j hit 17';
?>The above example will output:
j hit 17
Example #3 This will not work
<?php
goto loop;
for ($i = 0, $j = 50; $i < 100; $i++) {
while ($j--) {
loop:
}
}
echo "$i = $i";
?>The above example will output:
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 jump inside the same switch. This can be usefull to jump to default
<?php
$x=3;
switch($x){
case 0:
case 3:
print($x);
if($x)
goto def;
case 5:
$x=6;
default:
def:
print($x);
}
?>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>