2009-08-14 10 views
55

가능한 중복 :
quick php syntax questionPHP 문법 질문 : 물음표와 콜론은 무엇을 의미합니까?

return $add_review ? FALSE : $arg; 

물음표와 콜론은 무엇을 의미합니까?

감사

+4

정확한 중복 : http://stackoverflow.com/questions/889373/quick-php-syntax

if ($add_review) then { return FALSE; //$add_review evaluated as True } else { return $arg //$add_review evaluated as False } 

는 PHP에서 삼항 연산에 대한 자세한 내용은 여기를 참조하십시오 - 질문 –

+0

도 거의 똑같은 제목을 발견했습니다. –

+0

링크를 제공해 주셔서 감사합니다. –

답변

113

이것은 PHP ternary operator (또한 조건 연산자라고도 함)된다 - 제 피연산자 해당 평가되면 다른 번째 피연산자로 평가 번째 피연산자로 평가한다.

식으로 사용할 수있는 "if"문이라고 생각하십시오. 어떤 조건에 의존하는 간결한 과제를 만드는데 매우 유용 할 수 있습니다.

$param = isset($_GET['param']) ? $_GET['param'] : 'default'; 

또한 속기 버전이 있습니다 (PHP 5.3 이상). 중간 피연산자는 생략 할 수 있습니다. 연산자는 참이면 첫 번째 피연산자로, 그렇지 않으면 세 번째 피연산자로 평가됩니다. 예를 들면 :

$result = $x ?: 'default'; 

그것은 위의 코드는 정의되지 않은 인덱스 통지를 던질 것이다 즉, $ _GET이나 $ _POST 변수를 사용하고있다 isset 또는 a null coalescing operator, 우리는 더 이상 버전을 사용하는 데 필요한 방지하기 위해 때 언급 할 가치가있다 PHP7에서 도입되었습니다 :

$param = $_GET['param'] ?? 'default'; 
+12

PHP 5.3부터는 3 진 연산자의 중간 부분을 생략 할 수도 있습니다. 표현식'expr1? : expr3'은'expr1'이 TRUE로 평가되면'expr1'를, 그렇지 않으면'expr3'를 반환합니다. – Chandrew

+0

좋은 지적, 나는 ... –

14

if-else 연산자의 3 진 형식입니다. 위의 문장은 기본적으로 다음과 같이 읽습니다 http://www.addedbytes.com/php/ternary-conditionals/

+0

죄송합니다.이 @cristianivascu를 이해하려고 애쓰는 것은 어떻게 읽을 것인가?

+1

$ active_page의 값은 'home'이라는 문자열을 'active'로 출력하고, 그렇지 않으면 빈 문자열을 출력합니다. –