: 和 ?? 之间有啥区别? PHP 运算符? [复制]

Posted

技术标签:

【中文标题】: 和 ?? 之间有啥区别? PHP 运算符? [复制]【英文标题】:What are the differences between ?: and ?? PHP operators? [duplicate]: 和 ?? 之间有什么区别? PHP 运算符? [复制] 【发布时间】:2021-12-23 08:09:02 【问题描述】:

我对这两个运算符都有初步了解,但想知道两者之间的细微差别可能会导致“难以跟踪”的错误。

【问题讨论】:

您可以在 php.net 上找到文档,这可以让您提出更具体的问题。 这能回答你的问题吗? PHP ternary operator vs null coalescing operator 【参考方案1】:

?: 只是Ternary Operator expression ? if true : if false 的快捷方式,而Null Coalescing Operator ?? 仅具有该构造并测试变量是否设置/定义null

$a = '';
echo $a ?: 'test ?:';
echo $a ?? 'test ??';

产生test ?:,因为$a 是一个空字符串,计算结果为false,但它已设置。

//$a = null;
echo $a ?: 'test ?:';
echo $a ?? 'test ??';

产量:

警告:未定义的变量 $a 测试 ?: 测试??

在第一行,因为 $a 未设置,它会生成通知/警告并评估为 false,而在第二行,因为它未设置。

简而言之:

?: 将表达式计算为 truefalse 并在 false 时执行。 ?? 如果表达式不是 null 则执行

【讨论】:

以上是关于: 和 ?? 之间有啥区别? PHP 运算符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 mySQL 运算符 BETWEEN 和经典日期间隔之间有啥区别? [复制]

赋值运算符和复制构造函数有啥区别?

+=和=+ C赋值运算符有啥区别[重复]

某些 ETS 表类型之间有啥区别?

Makefile 中的 := 和 = 有啥区别?

$_POST、$_GET 和 $_REQUEST 之间有啥区别?