PHP5.3后推出了极富争议的局部goto语句(局部是指它不可能跳出例程或者进入循环)。对一些语言,特别是C语言,可以执行非局部跳转,或者长跳,但是PHP暂不支持此特性。对于局部goto语句的限制,PHP与其他语言相同,即不跳入循环体且不跳出当前的子例程。
goto语句是作为编程中没有办法的最后手段,一般情况不经常使用,请各位尽量不要使用。goto的语法很简单,如代码清单1-46所示:
代码清单1-46 使用goto语句的脚本
<?php for($i=0,$j=50; $i<100; $i++) { while($j--) { if($j==17) goto end; } } echo "i = $i"; end: echo 'j 此时等于 17'; ?>
标签为冒号结束。这段代码的结果为:
J此时等于17
虽然goto语句通常的用法让人诟病不已,有一幅漫画描述了一个程序员用户画了一只恐龙,因为使用goto过多,结果恐龙跳出来咬这个程序员。更有人将此语句引申到一种eval(罪恶)。
然而我认为,goto既然作为一种选择,并不是一件坏事,它的目的也是给我们提供简单、清晰、高效的代码,如果goto能够达到这些目的,那么它的存在便是有意义的。