有很多"为什么PHP会在这里抛出错误?" 的问题.嗯,这有点不同.我在重新编写同事编写的代码时发现了以下代码:
foreach($arr as $key => $value) {http://google.com/
echo $value;
// ...
}
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是:"嗯......多么令人尴尬;他一定是不小心粘贴在那里......"接着是:"等等......这段代码实际上没有办法运行......那应该是语法错误".但是:
$ php -l test.php
No syntax errors detected
Run Code Online (Sandbox Code Playgroud)
事实上,(就像那些看似不应该运行的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..."
Run Code Online (Sandbox Code Playgroud)
什么小的PHP语法产生了如此奇怪的结果?
(我使用的是PHP 5.3.5)