PHP Shorthand trernary operator??: "Ошибка анализа без ошибок":
Я только что загрузил некоторые старые PHP файлы на новый сервер и получаю ошибки разбора (Неожиданные ':') в сокращенных тройных операциях. например:
$y = $x ?: "Some default";
php version 5.2.16. Код усеян этими сокращениями?:, поэтому, прежде чем менять их, я подумал, что увижу, знает ли кто-нибудь об этом, поскольку я не использовал PHP некоторое время.
Ответы
Ответ 1
Это доступно только с PHP 5.3
The expression (expr1)? (expr2): (expr3) evaluates to expr2 if expr1 evaluates to TRUE, и expr3 if expr1 evaluates to FALSE.
Начиная с PHP 5.3, можно опустить среднюю часть троичного оператора. Выражение expr1?: Expr3 возвращает expr1, если expr1 оценивается как TRUE, и expr3 в противном случае. 1
См. этот пример для получения дополнительной информации.
или более полезный, но примечание в комментариях:
http://www.php.net/manual/en/control-structures.if.php#102060
1http://php.net/manual/en/language.operators.comparison.php
Ответ 2
Поскольку вы используете php 5.2.16, ваш троянец требует 2 варианта, например
$y = $x? "???" : "Some default";
Переменная = условие? истинное значение: ложное значение;