Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我可以使用“??”(空合并运算符)而不是空的吗?_Php_Null Coalescing Operator - Fatal编程技术网

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”$数据->标题
始终为非空且已定义