You should mention the label can't be a variable
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Оператор goto
используется для перехода в
другую часть программы. Место, куда необходимо перейти указывается с помощью чувствительный к регистру метки,
за которой ставится двоеточие, после оператора goto
указывается желаемая метка для перехода. Оператор не
является неограниченным "goto
". Целевая
метка должна находиться в том же файле, в том же контексте. Имеется в виду, что вы не можете ни перейти за
границы функции или метода, ни перейти внутрь одной из них. Вы также не можете
перейти внутрь любой циклической структуры или оператора 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
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 .