单问号
$b='456';
$c='789';
echo $a!='123'?$b:$c;
如果$a不等于123,则echo $b,否则echo $c;
等效:
if ($a != '123') {
echo $b;
} else {
echo $c;
}
双问号
echo $a??'456';
如果$a变量存在(isset),则echo $a,否则echo ‘456’;
等效:
if (isset($a)){
echo $a;
}else{
echo '456';
}
区别
$a = 0;
echo $a ?? '1';
echo $a ? '1' : '2';
此时:
第二行双引号返回‘0’,因为双问号使用类isset函数去验证变量是否存在;
第三行单引号返回‘2’,因为单问号可以理解为“if $a”语句,而if判断的是“是否为空”,而对于本案例,0、null、false均为空(false),所以返回‘2’;
发表回复