php7中 ?? 和三元运算符 ? : 的区别

版权声明:本文为Cam少爷原创,未经允许不得转载。 https://blog.csdn.net/sinat_37212928/article/details/82589284

php7新增一个运算符??,不知道大家平时是在什么时候用它,但是我一直用它代替以前的三元运算符? :,今天偶然发现,它和三元运算符是不一样的

$a = 0;    

$b = $a > 0  ? $a : 1;    

$c = $a ? $a : 2;    

$d = $a ?: 3;    

$f = $a ?? 3;    

var_dump($b); // int 1    
var_dump($c); // int 2    
var_dump($d); // int 3    
var_dump($f); // int 0    
var_dump(isset($a)); // boolean true    

> 从上面的结果可以看出 $a = $var ?? $temp 的意思是 $a = isset($var) ? $var : $temp

所以想用??判断一个赋值为0的变量的时候要小心了,结果可能和想象中的不一样

猜你喜欢

转载自blog.csdn.net/sinat_37212928/article/details/82589284
今日推荐