Подтвердить что ты не робот

PHP Shorthand trernary operator??: "Ошибка анализа без ошибок":

Я только что загрузил некоторые старые PHP файлы на новый сервер и получаю ошибки разбора (Неожиданные ':') в сокращенных тройных операциях. например:

$y = $x ?: "Some default";

php version 5.2.16. Код усеян этими сокращениями?:, поэтому, прежде чем менять их, я подумал, что увижу, знает ли кто-нибудь об этом, поскольку я не использовал PHP некоторое время.

4b9b3361

Ответ 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";

Переменная = условие? истинное значение: ложное значение;