沫延说
沫延说

PHP7.0中?与??的区别和使用

单问号

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

 

Morton.L

文章作者

发表回复

textsms
account_circle
email


沫延说

PHP7.0中?与??的区别和使用
单问号 $b='456'; $c='789'; echo $a!='123'?$b:$c; 如果$a不等于123,则echo $b,否则echo $c; 等效: if ($a != '123') { echo $b; } else { echo $c; } 双问…
扫描二维码继续阅读
2022-11-14