我有很多这样的代码
$Var = !empty($Data->title) ? ' string1 ' . $Data->title : ' string2 ' . $Var2;
我在网上搜索后发现?? (Null coalescing operator)
因此,我想可以做类似的事情
$Var = ' string1 ' . $Data->title ?? ' string2 ' . $Var2;
我之所以这样问,是因为我知道??
用于isset()
或NULL
,但是我需要empty()
作为我的项目代码。
答案 0 :(得分:3)
您已经说过
$a ?? $b
是(isset($a)) ? $a : $b;
但是,如果未定义变量或将其定义为null,则函数isset()
将返回false。而!empty()
如果未定义var或值为空或非零,则返回FALSE。因此,不能将??
用于!empty()
。
您可以使用
$a ?: $b
这是速记
((bool)$a) ? $a : $b;
Here are the rules如何将变量强制转换为布尔值。
简而言之,((bool)$a) == (!empty($a))
始终为true,除非$a
是从空标记创建的SimpleXML对象。
但是,在您的情况下,?!
和??
都不起作用,因为' string1 ' . $Data->title
总是非空且已定义。