Почему этот правильный код PHP
Поместите это в интерпретатор PHP, и он не покажет никаких ошибок. Это не выглядит правильным для меня. Кто-нибудь может пролить свет на то, почему это работает? Я действительно ищу понимание лексера / парсера.
<?php
-01;[];[];[];4;[[-1]];
2 ответа
Хотя код, кажется, имеет правильный синтаксис, он ничего не делает как есть.
Отсутствует разрыв строки, поэтому все выглядит беспорядочно, но у него есть правильный синтаксис с точкой с запятой в конце каждого оператора.
Если бы вы переписали этот код, чтобы сделать его более разборчивым, вы можете сделать это:
-01; // This is just a negative number with a meaningless 0 padded in front of it.
[]; // This is an empty array that isn't assigned to any variable, hence useless;
[]; // same
[]; // same
4; // Again, a number that isn't assigned to any variable nor expression.
[[-1]]; // This is a multi-dimensional array with -1 as the inner arrays value, that isn't assigned to anything either.
Действительный код, но бесполезный.
Несмотря на ваши предположения, этот код имеет синтаксическую ошибку в [];
а также [[-1]];
:
Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданное '[' in .... on line ....
Также код в целом не работает. Но другие части кода являются законными; Он имеет начальный тег PHP (конечный тег не требуется в определенных обстоятельствах, например, когда вы не включаете этот файл в другой файл) и два константных выражения.
-01
а также 4
являются константными выражениями, которые оценивают -1 и 4 соответственно. Эти выражения сопровождаются ;
который обозначает конец утверждений. Тогда эти операторы работают (не выдают ошибку), пока они не выполняют ничего полезного для вас. Парсер не ищет полезности или бесполезности в коде. Вы должны написать код, который будет делать что-то значимое, а не просто какие-то мусорные выражения, которые потребляют только ресурсы (время и память).