为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
Smart猫小萌 2021-12-03 19:24:58
我有很多这样的代码$Var = !empty($Data->title) ? ' string1 ' . $Data->title : ' string2 ' . $Var2;我在网上搜索,我发现 ?? (Null coalescing operator)因此,我认为可以做这样的事情$Var = ' string1 ' . $Data->title ?? ' string2 ' . $Var2;我问这个是因为我知道??用于isset()或NULL但我需要empty()我的项目代码。
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

正如你已经说过的

$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总是非空且已定义。


查看完整回答
反对 回复 2021-12-03
  • 1 回答
  • 0 关注
  • 182 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信