삼항 연산자는 “?” 와 “:”를 이용한 조건부 연산자로 if문과 비슷하게 동작합니다.

(expr1) ? (expr2) : (expr3)

expr1이 참이면 expr2를 반환하고, 거짓이면 expr3을 반환하는 식입니다. 그리고 php5.3부터 “expr1 ?: expr3” 형식으로 expr2을 비울 수 있습니다.

<?php
$_POST['action'] = NULL;
// action 값이 NULL 이므로 참이 됩니다.
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];
// 출력: default

// 위 예제는 다음의 if/else 구문과 동일합니다
if (empty($_POST['action'])) {
  $action = 'default';
} else {
  $action = $_POST['action'];
}
 ?>

<?php
// 얼핏 보기에, 'true'를 출력할 것 같습니다
echo (true ? 'true' : false ? 't': 'f');

// 그러나 위의 실제 출력은 't'입니다
// 이는 삼항 표현이 왼쪽에서 오른쪽으로 비교하기 때문입니다

// 다음이 위 코드와 동일한 더 명확한 형식입니다
echo ((true ? 'true' : 'false') ? 't' : 'f');

// 여기서, 첫 표현이 'true'로 평가되고, 이것이
// (bool) true로 평가된 후, 두 번째 삼항 표현의 true쪽을 반환합니다.
 ?>

<?php
echo 0 ?: 1 ?: 2 ?: 3; // 출력: 1
echo 1 ?: 0 ?: 3 ?: 2; // 출력: 1
echo 2 ?: 1 ?: 0 ?: 3; // 출력: 2
echo 3 ?: 2 ?: 1 ?: 0; // 출력: 3

echo 0 ?: 1 ?: 2 ?: 3; // 출력: 1
echo 0 ?: 0 ?: 2 ?: 3; // 출력: 2
echo 0 ?: 0 ?: 0 ?: 3; // 출력: 3
 ?>

<?php
$var = '<option .="" :="" selected="selected" status="=" value="1">Value 1</option>';
$var = '<option .="" :="" selected="selected" status="=" value="1">Value 1</option>';
 ?>

0 댓글