我今天回答了一个问题,它有一个简单的解决方案,但我还没理解为什么PHP解释器没有抛出语法错误.所以我的问题很简单:
为什么下面的陈述被认为具有有效的语法?
SomeIdentifier:;
AnythingGoesApparently:;
ThisCanGoOnAndOn:;
Run Code Online (Sandbox Code Playgroud)
更是如此,因为这些标识符没有在任何地方定义.
据我所知,冒号:只用作两个运算符的一部分:范围解析运算符,三元运算符,但不是它自己的.它也用于控制结构的Alternative语法.但在这种情况下,这些都不符合条件,所以这就像疯了一样困扰着我.
我相信这些会被解释为goto标签.
例如:
$x = 0;
goto ThisIsBad;
$x++;
ThisIsBad:
$x += 2;
echo $x;
Run Code Online (Sandbox Code Playgroud)
输出: 2
参考:http://php.net/manual/en/control-structures.goto.php