官方介绍
goto
操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记(例如 name:
),而跳转指令是 goto
之后接上目标位置的标记。
PHP 中goto
操作符的使用有一定限制:goto
跳转的目标位置只能位于同一个文件和作用域内;goto
无法跳出一个函数或类方法,也无法跳入到另一个函数;goto
无法跳入到任何循环或者 switch
结构中;goto
可以跳出循环或者 switch
。
我们通常是使用 goto 代替 break 来跳出嵌套的多层循环,goto 本身并没有跳出循环的作用,但其跳转到指定位置的作用使得其可以代替 break 来跳出循环。
和其他语言一样,PHP 中并不鼓励滥用 goto,滥用 goto 会导致程序的可读性严重下降。
提示:goto 操作符仅在 PHP5.3 及以上版本有效。
注意:goto 不能从循环外跳入循环中,只能跳出。
使用案例
原来 break
的使用方法:
$array = [1, 2, 3, 4, 5];
$list = [1, 2, 3, 4, 5];
foreach ($array as $num) {
$status = false;
// 要求直接跳出2个循环之外
foreach ($list as $i) {
if ($num == 3 && $i == 4) {
$status = true;
break;
}
}
if ($status == true) {
break;
}
}
echo 'end';
改成 goto
的使用方法:
$array = [1, 2, 3, 4, 5];
$list = [1, 2, 3, 4, 5];
foreach ($array as $num) {
foreach ($list as $i) {
// 要求直接跳出2个循环之外
if ($num == 3 && $i == 4) {
goto end;
}
}
}
// 定义goto
end:
echo 'end';