PHP goto声明详解

介绍

跳转语句用于发送程序的流程,以在代码的某个位置。该位置由用户定义的标签指定。通常,goto语句作为条件表达式(如if,else或case)的一部分出现在脚本中(在switch构造中)

语法

statement1; statement2; if (expression)    goto label1; statement3; label1: statement4;

在statement2之后,如果expression(作为if语句的一部分)为true,则程序流将定向到label1。如果不正确,则将执行statement3。之后程序继续以正常流程运行。

在下面的示例中,如果用户输入的数字为偶数,程序将跳转到指定的标签

示例

<?php $x=(int)readline("enter a number"); if ($x%2==0)    goto abc; echo "x is an odd number"; return; abc: echo "x is an even number"; ?>

输出结果

这将产生以下结果-

x is an even number

goto关键字前面的标签可以出现在当前语句之前或之后。如果goto语句中的label标识了较早的语句,则它构成一个循环。

以下示例显示了使用goto语句构造的循环

示例

<?php $x=0; start: $x++; echo "x=$x\n"; if ($x<5)    goto start; ?>

输出结果

这将产生以下结果-

x=1 x=2 x=3 x=4 x=5

使用goto,程序控制可以跳转到任何命名的位置。但是,不允许在循环中间跳跃。

示例

<?php for ($x=1; $x<=5; $x++){    if (x==3)       goto inloop;    for ($y=1;$y<=5; $y++){       inloop:       echo "x=$x y=$y\n";    } } ?>

输出结果

这将产生以下结果-

PHP Fatal error: 'goto' into loop or switch statement is disallowed in line 5