PHP 语法:goto 语句 1 个改进

问题

当 PHP 在执行代码过程,在某一时刻我们希望它能跳转到某一特定位置继续执行代码,该怎么做呢?

回答

在 PHP 中,我们可以使用 goto 操作符来使 PHP 代码执行器跳转到程序中某一特定位置。goto 的使用有一定限制,如:无法跳出一个函数或类,无法从外部跳入到一个函数,无法跳入到任何循环或者 switch 结构中。但可以跳出循环或者 switch,通常的用法是用 goto 代替 switch 中嵌套多层的 break

语法

goto 会使 PHP 直接跳转到指定标志位置。

goto 标志;

代码块

标志:

代码块

示例

例 1 —— 尝试跳入循环

<?php

goto loop;

for($i=0; $i<3; $i++) {

    while($i++) {

        loop:

    }

}

echo "End";

运行结果:

Fatal error: 'goto' into loop or switch statement is disallowed in F:\index.php on line 3

从运行结果可以看出,goto 不能从外部直接跳入循环中。

例 2 —— 一个简单的跳转

<?php
goto loop;
echo '这是第一个句子。';

loop:
echo '这是第二个句子。';

运行结果:

这是第二个句子。

例 3 —— 跳出循环

<?php

for($i=0; $i<10; $i++) {

    while($i++) {

        if($i==5) goto end;

    }

}

echo '此时 $i=10';

end:

echo '此时 $i=' . $i;

运行结果:

此时 $i=5

从例 3 运行结果可以看出,在我们需要从循环中跳出的时候,使用 goto 非常方便。

提示

虽然 goto 使用起来非常方便,但是随意使用 goto 语句极易造成代码逻辑混乱,所以应当谨慎使用。

php
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 4

没用过goto

4年前 评论
Mr_c 4年前
mowangjuanzi 4年前
Mr_c 4年前
阿麦

好东西! :wink: :wink: :wink: :wink: :wink: :wink:

4年前 评论

第一次看到挺新鲜的,虽然感觉不会用到。。写php思维还是从上往下走的

4年前 评论

goto 语句使用过, 但是之前在某篇文章上看到这么一句话,大概意思就是 老祖宗好不容易淘汰了goto......balabala..., 打哪之后就没敢用过....(小声bb: goto真香(:+1: )

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!