php表达式??与?:的使用

$arr = ['test' => '','test2' => 'something'];
var_dump($arr['test'] ?? 'nothing');//string(0) ""
var_dump($arr['test'] ?: 'nothing');//string(7) "nothing"

var_dump($arr['test2'] ?? 'nothing');//string(9) "something" var_dump($arr['test2'] ?: 'nothing');//string(9) "something"

var_dump($arr['test3'] ?? 'nothing');//string(7) "nothing" var_dump($arr['test3'] ?: 'nothing');//Notice: Undefined index: test3;同时输出 string(7) "nothing"

总结:

双问号(??): 相当于 isset($x) ? $x : 'nothing'; //用于变量不存在的情况,不考虑值的真假

问冒号(?:):  相当于 if($x) ? $x : 'nothing';  //用于变量已存在的情况,考虑值的真假

posted @ 2021-03-15 17:16  Ryuma  阅读(189)  评论(0)    收藏  举报