PHP的goto控制结构无限执行


PHP goto control structure infinite execution

这看起来像一个无限循环。

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.

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

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

输出:

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

代码的命名段(a:b:)不停止脚本;它们只是你可以跳到的名字。

goto将跳转到该部分代码。所以在第一种情况下,你跳起来,从b开始,然后你一遍又一遍地这样做。但在第二种情况下,你跳下来