【发布时间】:2021-12-23 08:09:02
【问题描述】:
我对这两个运算符都有初步了解,但想知道两者之间的细微差别可能会导致“难以跟踪”的错误。
【问题讨论】:
-
您可以在 php.net 上找到文档,这可以让您提出更具体的问题。
标签: php
我对这两个运算符都有初步了解,但想知道两者之间的细微差别可能会导致“难以跟踪”的错误。
【问题讨论】:
标签: php
?: 只是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 则执行
【讨论】: