이 오류가 발생하는 이유는 개발자가 보여주는 라이브 데모와 동일한 코드에서 작동합니다. 어떤 도움이라도 대단히 감사 할 것입니다.구문 분석 오류 : 예기치 않은 구문 오류 '
$method = $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] ?: $_SERVER['REQUEST_METHOD'];
이 오류가 발생하는 이유는 개발자가 보여주는 라이브 데모와 동일한 코드에서 작동합니다. 어떤 도움이라도 대단히 감사 할 것입니다.구문 분석 오류 : 예기치 않은 구문 오류 '
$method = $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] ?: $_SERVER['REQUEST_METHOD'];
하는 문제는 삼원 오퍼레이터 바와 다른 같은 인자 누락된다는 사실 아니다 . 문제는 아마도 서버의 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.
가 같거나 5.3 위 PHP 버전과 임의의 서버에 유효한 기록되는 방법. 그렇지
은이 이에 상응하는 표현으로 다시 작성해야합니다
$method = $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] ? $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] : $_SERVER['REQUEST_METHOD'];
변경이
$method = $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] ?: $_SERVER['REQUEST_METHOD'];
$method = $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] ? "" : $_SERVER['REQUEST_METHOD'];
OR
$method = $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] ? NULL : $_SERVER['REQUEST_METHOD'];
두 번째 인수가없는 삼항 연산자는 완전히 유효합니다. '$ a = $ x? : $ y'는'$ a'에'$ x'를 대입합니다. 두 번째 연산자가 누락되면 첫 번째 연산자가 두 번째 연산자로 사용됩니다. [PHP 5.3부터는 삼항 연산자의 중간 부분을 생략 할 수 있습니다. Expression expr1? : expr1은 expr1이 TRUE이면 expr1을, 그렇지 않으면 expr3을 반환합니다.] (http://php.net/manual/en/language.operators.comparison.php). 진짜 문제는 PHP 버전에 관한 것입니다. –
는이 질문의 폐쇄에 동의하지 않는다. 3 차 연산자에 대한 오해는 초보 프로그래머들에게는 매우 일반적입니다. –
문제는 아마도 PHP 버전 일 것입니다. [ "PHP 5.3부터는 삼항 연산자의 중간 부분을 생략 할 수 있습니다 .expression expr1? : expr1은 expr1이 TRUE이면 expr1을, 그렇지 않으면 expr3을 반환합니다."] (http://php.net/manual/ en/language.operators.comparison.php). PHP 버전이 5.3보다 작 으면 작동하지 않습니다. –
** 아래의 모든 대답이 잘못되었습니다. ** 이것은 PHP 버전이 맞지 않아 위의 코드가 PHP> 5.3에서 작동하고 더 낮은 버전에서는 실패합니다. [the docs] (http://php.net/ternary)에서 : PHP 5.3부터 3 진 연산자의 중간 부분을 생략 할 수 있습니다. 표현식'expr1? : expr3'은'expr1'이'TRUE'로 평가되면'expr1'을, 그렇지 않으면'expr3'을 리턴합니다. 따라서 아래 답변 중 어느 것도이 질문에 올바르게 답변하지 않습니다. 정답은'$ method = $ _SERVER [ 'HTTP_X_HTTP_METHOD_OVERRIDE']입니까? $ _SERVER [ 'HTTP_X_HTTP_METHOD_OVERRIDE'] : $ _SERVER [ 'REQUEST_METHOD']; ' – nickb