你真的瞭解三元運算子嗎?
阿新 • • 發佈:2020-12-22
三元運算子大家平常肯定不少用,但是,你真的瞭解三元運算子嗎?
先來講基礎版本的運算子:?
表示式(expr1) ? (expr2) : (expr3)
在expr1求值為true
時的值為expr2,在expr1求值為false
時的值為expr3。
比較簡單,和字面意思一樣,expr1 為真時返回expr2,反之返回 expr3。
然後說下進化版:?: 條件運算子
自 PHP 5.3 起,可以省略三元運算子中間那部分。表示式expr1 ?: expr3
在expr1求值為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。
使用過程中一定要先明確表示式的返回結果,要不然挖坑把自己埋了,排錯都萬萬想不到會是一個表示式的問題。別問為啥知道的,問就是自己踩過坑。