Php 我可以使用“??”(空合并运算符)而不是空的吗?
我有很多这样的代码Php 我可以使用“??”(空合并运算符)而不是空的吗?,php,null-coalescing-operator,Php,Null Coalescing Operator,我有很多这样的代码 $Var=!空($Data->title)?'字符串1'$数据->标题:“string2”$Var2; 我在网上搜索,找到了??(空合并运算符) 正因为如此,我想我们可以做这样的事情 $Var='string1'$数据->标题??'string2'$Var2; 我问这个问题是因为我知道?用于isset()或NULL,但我需要empty()用于我的项目代码。正如你所说 $a ?? $b 是(isset($a))的缩写吗$a:$b 但是,如果变量未定义或定义为null,则函
$Var=!空($Data->title)?'字符串1'$数据->标题:“string2”$Var2;
我在网上搜索,找到了??(空合并运算符)
正因为如此,我想我们可以做这样的事情
$Var='string1'$数据->标题??'string2'$Var2;
我问这个问题是因为我知道?
用于isset()
或NULL
,但我需要empty()
用于我的项目代码。正如你所说
$a ?? $b
是(isset($a))的缩写吗$a:$b代码>
但是,如果变量未定义或定义为null,则函数返回false。如果未定义var或var值为空或非零值,则返回FALSE。所以你不能用??来表示!empty()
你可以用
$a ?: $b
这是
((bool)$a) ? $a : $b;
如何将变量强制转换为布尔值
简而言之,((bool)$a)=(!empty($a))
始终为真,除非$a
是从空标记创建的SimpleXML对象
但是,在您的情况下,代码>或?
将起作用,因为“string1”$数据->标题始终为非空且已定义。如您所述
$a ?? $b
是(isset($a))的缩写吗$a:$b代码>
但是,如果变量未定义或定义为null,则函数返回false。如果未定义var或var值为空或非零值,则返回FALSE。所以你不能用??来表示!empty()
你可以用
$a ?: $b
这是
((bool)$a) ? $a : $b;
如何将变量强制转换为布尔值
简而言之,((bool)$a)=(!empty($a))
始终为真,除非$a
是从空标记创建的SimpleXML对象
但是,在您的情况下,代码>或?
将起作用,因为“string1”$数据->标题
始终为非空且已定义