Сокращенный оператор PHP Сокращения "?:" Ошибка разбора неожиданная ":" - PullRequest
28 голосов
/ 08 июня 2011

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

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

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

Ответы [ 2 ]

58 голосов
/ 08 июня 2011

Доступно только с PHP 5.3

Выражение (expr1)? (expr2): (expr3) оценивается как expr2, если expr1 оценивается как TRUE , и expr3, если expr1 оценивается как FALSE .

Начиная с PHP 5.3, можно опустить среднюю часть троичного оператора. Выражение expr1?: Expr3 возвращает expr1, если expr1 оценивается как TRUE , и expr3 в противном случае. 1

См. этот пример для получения дополнительной информации.

или более полезный, но примечание в комментариях: http://www.php.net/manual/en/control-structures.if.php#102060


1 http://php.net/manual/en/language.operators.comparison.php

0 голосов
/ 08 июня 2011

Поскольку вы используете php 5.2.16, вашей троице требуется 2 варианта, например,

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

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

...