PHP转到控制结构无限执行

时间:2014-05-20 03:32:01

标签: php goto control-structure

这似乎像无限循环一样执行。

a:
    echo "Statement 1 \n";
b:
    echo "Statement 2 \n";
if(1 > 2)
    goto a;
else
    goto b;

但这可以正常使用。

if(1 > 2)
    goto a;
else
    goto b;
a:
    echo "Statement 1 \n";
b:
    echo "Statement 2 \n";

有什么区别。如何在第一种情况下再次执行一些代码块。示例

$b = 1;
$c = 2;
$a = $b+$c;

if($a > $ b)
  // here i want to cal $a = $b+$c; without using function or copy pasting the code.

2 个答案:

答案 0 :(得分:2)

goto将跳转到代码的那一部分。所以在第一种情况下,你跳起来再次从b开始:然后你一遍又一遍地做。但在第二种情况下,你跳了下来。

答案 1 :(得分:2)

这是一个无限循环因为......你的代码是一个无限循环!

    a:
        echo "...";
.-- b: <------------.
|       echo "..."; |
|   if(1 > 2)       |
|       goto a;     |
|   else            |
`-----> goto b; ----´

将输出:

Statement 1
Statement 2
Statement 2
Statement 2
Statement 2
[...]

代码的命名部分(a:b:)不会停止脚本;它们只是你可以跳到的名字。如果到达,将始终执行命名的代码段。