「なぜPHPはここでエラーを投げますか?」質問。まあ、これは少し違っています。 「待って:;:PHPが解析エラーを投げないのはなぜですか?
foreach($arr as $key => $value) {http://google.com/
echo $value;
// ...
}
私が最初に考えた:に続いて、「彼は偶然そこにある...という貼り付けていなければなりませんうーんどのように恥ずかしい」同僚によって書かれたいくつかのコードを再加工しながら、私は、次のコードを見つけました...このコードが実際に実行される方法はありません。これは構文エラーでなければなりません "。そして、まだ:
$ php -l test.php
No syntax errors detected
そして実際、(一見実行すべきではありませんので、多くのPHPのコードのように)それは問題なく生産で実行されます。 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..."
:だから私は少しテストをしましたか?
'http:'はラベルで、 '//'はコメントです。私は前にこのトリックを見た。 – Borealid
もちろん。私はPHPが 'goto'を持っているのを知らなかった。トリッキー。 – chesles
「なぜこの地獄のような特徴が、ダムの機能で既に乗っている言語で実装されなければならないのか?リスト。 –