Есть много «Почему 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». Tricky. – chesles
Ugh. Еще один вопрос о том, почему «ад *» сделал эту мрачную функцию, должен быть реализован на языке, который уже обходит тупыми функциями? » список. –