: 和 ?? 之间有啥区别? 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
,而在第二行,因为它未设置。
简而言之:
?:
将表达式计算为 true
或 false
并在 false
时执行。
??
如果表达式不是 null
则执行
【讨论】:
以上是关于: 和 ?? 之间有啥区别? PHP 运算符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章