1.(expr1) ? (expr2) : (expr3)
在 expr1 求值為 TRUE
時的值為 expr2,在 expr1 求值為 FALSE
時的值為 expr3。
$a = (expr1) ? (expr2) : (expr3);
//等價於下面的代碼
if (expr1) {
$a = expr2;
} else {
$a = expr3;
}
注意,當expr1是一個變量時,以下情況為FALSE
false //布爾值false
0 //整數0
0.0 //浮點型0.0
"" //空字符串
"0" //字符串0
[] //空數組
NULL //特殊類型NULL,包括尚未賦值的變量
2.(expr1) ?: (expr3)
自PHP5.3起,支持expr1 ?: expr3,在 expr1 求值為 TRUE
時返回 expr1,否則返回 expr3。
$a = expr1 ?: expr3;
//等價於下面代碼
if (expr1) {
$a = expr1;
} else {
$a = expr3;
}
3.(expr1) ?? (expr2)
PHP7引入 "??"(NULL合並),等價於isset(expr1) ? expr1 : epr2。
$a = (expr1) ?? (expr2);
//等價於下面代碼
if (isset(expr1)) {
$a = expr1;
} else {
$a = expr2;
}
參考