有很多“为什么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)
答案 0 :(得分:7)
http:
被解释为标签(用于goto
语句),//google.com/
作为注释(通过语法高亮可以很容易地看到)。< / p>
goto运算符可用于跳转到程序中的另一个部分。 目标点由标签后跟冒号指定,指令以goto后跟所需的目标标签。