프로그래밍/PHP2018.11.12 17:43




삼항 연산자(Ternary Operator)를 자주 사용하는 이유는 무엇보다도 if 나 switch 보다 간결하게 사용하기가 편하기 때문일겁니다.
하지만, PHP에서 삼항 연산자를 아래와 같이 중첩하여 사용하는 경우, 원치 않는 결과가 나와 당혹스러운 경우가 발생하게 됩니다.

$a = 2; 
echo ( 
    $a == 1 ? 'one' : 
    $a == 2 ? 'two' : 
    $a == 3 ? 'three' : 
    $a == 4 ? 'four' : 'other'); 
echo "{$a}\n"; 
// prints 'four' 


우선순위에 맞게 괄호로 묶어 주어야만 원하는 결과가 올바르게 출력됩니다.

$a = 2; 

echo ($a == 1 ? 'one' : 
    ($a == 2 ? 'two' : 
    ($a == 3 ? 'three' : 
    ($a == 4 ? 'four' : 'other') ) ) ); 
echo "{$a}\n"; 
//prints 'two' 







Posted by 채윤아빠