6
有很多「爲什麼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)
'http:'是一個標籤,'//'是註釋。我以前見過這個招數。 – Borealid
當然。我不知道PHP有'goto'。棘手。 – chesles
呃。 「爲什麼地獄*做了這個令人沮喪的功能的另一個項目必須用一種已經充斥着愚蠢特徵的語言來實現?」名單。 –