PHP中?:与??的区别

(5条消息) PHP中?:与??的区别_白.小白的博客-CSDN博客_php??

 

本文中,我们将比较和分析PHP中的两个速记条件运算符,简写三元运算符,即evlis运算符(?:)和空合并运算符(??)。

从PHP 5.3+开始,我们可以使用较短的三元运算符语法,省略三元运算符的中间部分从而实现简写。

$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;

 


null合并运算符要求结果必须存在,并且不为null,即使为false,条件依然成立。

下面用具体的数据列出?:与??两者之间的差别:

 

 


————————————————
版权声明:本文为CSDN博主「白.小白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bai_xiaobai/article/details/95338346

————————————————
版权声明:本文为CSDN博主「白.小白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bai_xiaobai/article/details/95338346

posted @ 2022-05-18 09:38  变形金刚之猩猩将军  阅读(118)  评论(0)    收藏  举报