Проблема заключается не в том, что тройной оператор отсутствующего аргумент как другой заявил , Проблема, вероятно, в PHP-версии сервера.
Прямо из PHP doc:
Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise.
Путь написано справедливо для любого сервера с PHP версии равной или выше 5,3.
Else он должен быть переписан в эквивалентном выражении:
$method = $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] ? $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] : $_SERVER['REQUEST_METHOD'];
Я не согласен с закрытием этого вопроса. Непонимание третичного оператора довольно распространено среди начинающих программистов. –
Проблема, вероятно, в версии PHP. ["Начиная с PHP 5.3, можно оставить среднюю часть тернарного оператора. Expression expr1?: Expr3 возвращает expr1, если expr1 имеет значение TRUE и expr3 в противном случае."] (Http://php.net/manual/ ен/language.operators.comparison.php). Если ваша версия PHP составляет <5.3, это не сработает. –
** Все приведенные ниже ответы неверны. ** Это несоответствие версии PHP, приведенный выше код будет работать на PHP> 5.3 и не работать в более низких версиях. Из [docs] (http://php.net/ternary): Начиная с PHP 5.3, можно оставить среднюю часть тернарного оператора. Выражение 'expr1?: Expr3' возвращает' expr1', если 'expr1' оценивает' TRUE' и 'expr3' в противном случае. Итак, ни один из ответов ниже не будет правильно отвечать на этот вопрос. Правильный ответ: '$ method = $ _SERVER ['HTTP_X_HTTP_METHOD_OVERRIDE']? $ _SERVER ['HTTP_X_HTTP_METHOD_OVERRIDE']: $ _SERVER ['REQUEST_METHOD']; ' – nickb