为什么这种语法有效?

时间:2016-02-05 21:46:52

标签: php

我今天回答了一个question有一个简单的解决方案,但我还没理解为什么PHP解释器没有抛出语法错误。所以我的问题很简单:

为什么下面的陈述被认为具有有效的语法?

SomeIdentifier:;
AnythingGoesApparently:;
ThisCanGoOnAndOn:;

更是如此,因为这些标识符没有在任何地方定义。

据我所知,冒号:仅用作两个运算符的一部分:The Scope Resolution OperatorThe Ternary Operator,但不能单独使用。它也用在Alternative syntax for control structures中。但是这些都不符合这种情况,所以这就像疯了一样困扰我。

1 个答案:

答案 0 :(得分:6)

我相信这些会被解释为goto标签。

例如:

$x = 0;
goto ThisIsBad;
$x++;

ThisIsBad:
$x += 2;

echo $x;

输出:2

参考:http://php.net/manual/en/control-structures.goto.php