gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:53:08 25 4
gpt4 key购买 nike

我有很多这样的代码

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

我在网上搜索了一下,发现?? (空合并运算符)

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

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

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

最佳答案

正如你所说

$a ?? $b

(isset($a)) 的简写吗? $a:$b;

但是函数 isset()如果变量未定义或定义为 null,则返回 false。而!empty()如果 var 未定义或者具有空值或非零值,则返回 FALSE。因此,您不能将 ?? 用于 !empty()

你可以使用

$a ?: $b 

这是 的简写

((bool)$a) ? $a : $b;

Here are the rules如何将变量转换为 bool 值。

简而言之,((bool)$a) == (!empty($a)) 始终为 true,除非 $a 是从以下位置创建的 SimpleXML 对象:空标签。

但是,在您的情况下, ?!?? 都不起作用,因为 ' string1 ' 。 $Data->title 始终非空且已定义。

关于php - 我可以使用 `??` (空合并运算符)而不是空吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57640949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com