首页 > 解决方案 > : 和 ?? 之间有什么区别?PHP 运算符?

问题描述

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

标签: php

解决方案


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

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

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

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

产量:

警告:未定义变量 $a test ?: test ??

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

简而言之:

  • ?:将表达式计算为trueorfalse并执行 if false
  • ??如果表达式不是则执行null

推荐阅读