1. 程式人生 > 實用技巧 >你真的瞭解三元運算子嗎?

你真的瞭解三元運算子嗎?

三元運算子大家平常肯定不少用,但是,你真的瞭解三元運算子嗎?

先來講基礎版本的運算子:?

表示式(expr1) ? (expr2) : (expr3)expr1求值為true時的值為expr2,在expr1求值為false時的值為expr3。

比較簡單,和字面意思一樣,expr1 為真時返回expr2,反之返回 expr3。

然後說下進化版:?: 條件運算子

自 PHP 5.3 起,可以省略三元運算子中間那部分。表示式expr1 ?: expr3expr1求值為true時返回expr1,否則返回expr3。

需要注意的是,當 expr1 為表示式時,返回值為結果值。例如:

$b = -3;
$a = $b>0 ?: 'b is little'; //bool(true)

為變數則返回對應的變數值。

$b = 3;
$a = $b ?: 'b is little';    //int 3

最後說下究極進化版:?? 合併運算子

PHP 7 開始存在 "??" (NULL 合併)運算子。主要用來作 isset 的判斷。

expr1為null,表示式(expr1) ?? (expr2)等同於expr2,否則為expr1。

使用過程中一定要先明確表示式的返回結果,要不然挖坑把自己埋了,排錯都萬萬想不到會是一個表示式的問題。別問為啥知道的,問就是自己踩過坑。