PHP7中 " ?? " 和 " ?: " 的区别

此文章发布于33个月前,部分信息可能已经过时,请自行斟酌确认

$a ?? 0 等同于 isset($a) ? $a : 0

$a ?: 0 等同于 $a ? $a : 0

empty:判断一个变量是否为空(null、false、00、0、'0'0'、都会返回true)

isset:判断一个变量是否设置(值为false、00、0、'0′、也会返回true) 注意:如果$a为php常量中的null则isset($a)为 false

代码示例:


$array = [
'a' => 1,
'b' => 2,
'c' => 0,
'd'=>[],
];

$a = $array['b'] ?? 0;
//结果为$a=2  相当于 $a = isset($array['b']) ? $array['b'] : 0;

$b = $array['a'] ?: 0;
//结果为$b=1

$c = $array['e'] ?? 3;
//结果为$c=3

$d = $array['e'] ?: 3;
//系统报错 因为 $array['e'] 未声明  //未定义数组索引: e

$e = $array['c'] ? 5 : 6;
//结果为$e=6

$f = isset($array['c']) ? 1 : 2;
//结果为$f=1

$g = $array['e'] ? 3 : 4;
//系统报错 因为 $array['e'] 未声明  //未定义数组索引: e

$h = isset($array['d']['e']) ? 5 : 6;
//结果为$h=6

$i = !empty($array['d']) ? 7 : 8;
//结果为$i=8

$j = !empty($array['e']) ? 9 : 10;
//结果为$j=10

最后修改:2020 年 12 月 31 日 01 : 08 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论