为什么PHP不会抛出解析错误?

时间:2012-01-19 23:46:20

标签: php

有很多“为什么PHP会在这里抛出错误?”的问题。嗯,这有点不同。我在修改同事编写的代码时找到了以下代码:

foreach($arr as $key => $value) {http://google.com/
  echo $value;
  // ...
}

我的第一个想法是:“嗯......多么尴尬;他一定是不小心粘贴在那里......”接着是:“等等......这段代码实际上没有办法......这应该是一种语法错误”。然而:

 $ php -l test.php
 No syntax errors detected

事实上,(就像那些看似不应该运行的PHP代码一样)它在生产中运行没有问题。所以我做了一些测试:

foreach($arr as $key => $value) {http://google.com/ <-- original, no error
foreach($arr as $key => $value) {http: <-- also no syntax error
foreach($arr as $key => $value) {http  <-- bingo! "Unexpected T_ECHO..."

PHP的语法有什么小问题产生如此奇怪的结果?

(我使用的是PHP 5.3.5)

1 个答案:

答案 0 :(得分:7)

http:被解释为标签(用于goto语句),//google.com/作为注释(通过语法高亮可以很容易地看到)。< / p>

Documentation on goto

  

goto运算符可用于跳转到程序中的另一个部分。 目标点由标签后跟冒号指定,指令以goto后跟所需的目标标签。