![](/img/trans.png)
[英]Is there something called empty coalescing operator like Null coalescing operator
[英]Can I use `??` (Null coalescing operator) instead of empty?
我有很多像这样的代码
$Var = !empty($Data->title) ? ' string1 ' . $Data->title : ' string2 ' . $Var2;
我在网上搜索了一下,发现了?? (Null coalescing operator)
?? (Null coalescing operator)
因此,我认为可以做这样的事情
$Var = ' string1 ' . $Data->title ?? ' string2 ' . $Var2;
我问那是因为我知道??
用于isset()
或NULL
但我的项目代码需要empty()
。
正如你已经说过的那样
$a ?? $b
是(isset($a)) ? $a : $b;
的简写(isset($a)) ? $a : $b;
(isset($a)) ? $a : $b;
但是,如果未定义变量,或者将变量定义为null,则函数isset()
将返回false。 如果未定义var或者具有空值或非零值,则!empty()
返回FALSE。 所以你不能用??
for !empty()
。
你可以用
$a ?: $b
这是一个简写
((bool)$a) ? $a : $b;
简而言之((bool)$a) == (!empty($a))
总是为真,除非$a
是从空标签创建的SimpleXML对象。
但是,在你的情况下,都没有?!
也不??
会工作,因为' string1 ' . $Data->title
' string1 ' . $Data->title
始终为非空并定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.