1.基本

goto操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是goto之后接上目标位置的标记。

goto LABEL; //这个标签自定义
echo 'AA';
LABEL:
echo 'BB';

以上例子输出:BB

2.限制

goto有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch结构中。可以跳出循环或者switch,通常的用法是用goto代替多层的break。

for($i=0, $j=10; $i<20; $i++) {
    while($j--) {
        if($j==6)
            goto end;
    }
}
echo"此处不会被输出";
end:
echo "i = $i\n";
echo 'stop here';

直接输出end后面的了。再接着看一例:

$n= 1;
switch($n){
    case 1:
        goto one;//使用goto跳到one标记处
        echo "A"; //goto已经跳转,这条语句不执行
    case 2:
        goto two;
        echo "B";
    case 3:
        goto three;
        echo "C";
}


one:
echo 1;
//exit;
two:
echo 2;
//exit;
three:
echo 3;
//exit;
/*
最终结果是:123
*/

虽然goto平时用的不多。但有时候在特定场景下效率还是很高的。