프로그래밍/PHP

PHP 삼항 연산자 ( ? : ) 사용 주의점

채윤아빠 2018. 11. 12. 17:43
728x90
반응형




삼항 연산자(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'