你真的了解三元运算符吗?

三元运算符大家平常肯定不少用,但是,你真的了解三元运算符吗?

先来讲基础版本的运算符:?

表达式 (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。

使用过程中一定要先明确表达式的返回结果,要不然挖坑把自己埋了,排错都万万想不到会是一个表达式的问题。别问为啥知道的,问就是自己踩过坑。

 

posted @ 2020-12-22 14:46  所见即我  阅读(373)  评论(0编辑  收藏  举报