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

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

【问题讨论】:

标签: php


【解决方案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 则执行

【讨论】:

    猜你喜欢
    • 2016-06-22
    • 2012-09-09
    • 2016-04-28
    • 2011-01-02
    • 2011-06-12
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 2013-05-16
    相关资源
    最近更新 更多