Конечно, я не программист PHP, и я не знаю, как будет выглядеть точная реализация GOTO на PHP, но вот мое понимание GOTO:
GOTO - это просто более явный оператор управления потоком, как и любой другой. Допустим, у вас есть несколько вложенных циклов, и вам нужно найти только одну вещь. Вы можете вставить условный оператор (или несколько), а когда условия выполняются должным образом, вы можете использовать оператор GOTO для выхода из всех циклов (вместо использования оператора 'break' на каждом уровне вложенности с условным оператором). для каждого. И да, я считаю, что традиционная реализация состоит в том, чтобы иметь именованные метки, к которым оператор GOTO может переходить по имени. Вы можете сделать что-то вроде этого:
for(...) {
for (...) {
for (...) {
// some code
if (x) GOTO outside;
}
}
}
:outside
Это более простая (и более эффективная) реализация, чем без операторов GOTO. Эквивалент будет:
for(...) {
for (...) {
for (...) {
// some code
if (x) break;
}
if(x) break;
}
if(x) break;
}
Во втором случае (что является обычной практикой) есть три условных утверждения, которые явно медленнее, чем просто одно. Поэтому для оптимизации / упрощения вы можете использовать операторы GOTO в тесно вложенных циклах.