2009-12-16 5 views
2

내가 더 잘 내 요구에 맞게 스크립트를 수정 일하고 있어요, 나는 코드에서이 줄을 건너 온 : 나는 함수 자체가 본질적으로 쿠키 getter 메소드 것을 알고PHP에서이 구문은 무엇입니까?

return isset($_COOKIE[$parameter_name]) ? $_COOKIE[$parameter_name] : ""; 

,하지만 난 그 구문 (즉, "?"과 ":")이 무엇을 의미하는지 확실히 모르겠습니다. 이게 정말 바보 같은 질문이라면 사과 드리지만 누군가 나에게 설명해 줄 수 있습니까?

답변

13

이것은 ternary operation이며 기본적으로 if/then/else를 작성하는보다 간단한 방법입니다.

코드 샘플에 따라서

그 대신 쓸 필요없이 사용되고 :

if (isset($_COOKIE[$parameter_name])) { 
    return $_COOKIE[$parameter_name]; 
} else { 
    return ""; 
} 
2

를? : 삼항 연산자입니다. 그것의 매우 빠른 만약 다음에 b 다른 C :

return a ? b : c; 
6

그것은 특정 PHP하지 않고 대부분되는 언어의에 존재하는 ternary operation있어 :

if (a) { return b; } else { return c; } 

은 동일합니다.

(condition) ? true_case : false_case 

제 의견으로는 귀하의 예와 같이 짧은 하나의 라이너로만 사용해야합니다. 그렇지 않으면 readability가 어려워 질 것입니다. 따라서 삼항 연산을 중첩하지 마십시오 (그렇게 할 수는 있지만).

1
return isset($_COOKIE[$parameter_name]) ? $_COOKIE[$parameter_name] : ""; 

함수 반환 : 그렇지

$ _COOKIE로 지정된 PARAMETER_NAME이있는 경우
$_COOKIE[$parameter_name] 

, 빈 문자열.

프로토 타입 :

condition ? this runs if condition true : this runs if condition false; 
관련 문제