我可以使用`??`(空合并运算符)而不是空吗?

我有很多这样的代码

$Var = !empty($Data->title) ? ' string1 ' . $Data->title : ' string2 ' . $Var2;

我在网上搜索,我发现 ?? (Null coalescing operator)

因此,我认为可以做这样的事情

$Var = ' string1 ' . $Data->title ?? ' string2 ' . $Var2;

我问这个是因为我知道??用于isset()NULL但我需要empty()我的项目代码。


Smart猫小萌
浏览 183回答 1
1回答

慕运维8079593

正如你已经说过的$a ?? $b是简写 (isset($a)) ? $a : $b;但是,isset()如果变量未定义或定义为 null,则该函数返回 false。而!empty() 如果 var 未定义或具有空值或非零值,则返回 FALSE。所以你不能使用??for !empty()。你可以用$a ?: $b这是一个简写((bool)$a) ? $a : $b;以下是如何将变量转换为布尔值的规则。简而言之((bool)$a) == (!empty($a))始终为真,除非$a是从空标签创建的 SimpleXML 对象。但是,在您的情况下,既?!不会也??不会起作用,因为' string1 ' . $Data->title总是非空且已定义。
打开App,查看更多内容
随时随地看视频慕课网APP