三元运算符
PHP 中也有三元运算符,三元运算符可以实现简单的条件判断功能,即根据第一个表达式的结果在另外两个表达式中选择一个并执行,三元运算
符也被称为三目运算符
或者条件运算符
。
三元运算符的功能与“if else”语句一致,它可以在一行中书写,代码精练、执行效率更高。在 PHP 程序中恰当地使用三元运算符能够让脚本更为简洁、高效。
三元运算符的语法格式如下:
(expr1)?(expr2):(expr3); //表达式1?表达式2:表达式3
如果条件“expr1”成立,则执行语句“expr2”,否则执行“expr3”。
PHP 7添加了新的运算符双问号(??)运算符。在PHP 7中,双问号(??)运算符称为Null合并运算符
。
$a??$b;
$a是不是是null,如果不为null,则返回$a,否则返回$b;
$a ? : $b;
以上简写语法被成为evlis运算符,下面用evlis运算符,三元运算符以及常用的if else进行对比,结果相同。
//使用elvis运算符
$a ? : $b;
//使用三元运算符
$a ? $a : $b;
//使用if / else
if($a){
return $a;
} else {
return $b;
}
//注意:这里的$a和$b并不是指定数值,它可以是任意类型的数据
关于以上代码可以理解为,当$a条件成立如果为0或者false均被视为条件不成立,则直接返回$a的结果,不成立,则返回$b。
值得注意的一点:$a必须已经有过声明,否则代码会报错。
在PHP7中引入了null合并运算符(??),具体语法如下:
$a??$b;
$a是不是是null,如果不为null,则返回$a,否则返回$b;
下面用null合并运算符,三元运算符以及常用的if else进行对比,结果相同。
//作为if语句:
if(isset($a)){
$a;
} else {
$b;
}
//三元运算符:
(isset($a) ? $a : $b);
//null合并运算符
$a ?? $b;