PHP 三元运算子(?:) 与 NULL运算子(??)差异

..

很多程式语言都有三元运算子,而 PHP 在 7.x 后,有多一个 ?? 的语法,可以简化一些常用的语法。

例如:

  • $arg = isset($_GET['arg']) ? $_GET['arg'] : '';

可简写成

  • $arg = $_GET['arg'] ?? '';

PHP 三元运算子(?:) 与 NULL运算子(??)差异

在实际操作 ?? 和 ?: 的时候,还是有些小地方要注意的

官方文件:三元运算子(?:) 与 NULL合并运算子(??)

?: Ternary Operator

  • $action = ($expr1) ? $expr2 : $expr3;
    • 当 $expr1 为 true,return $expr2,否则 return $expr3。
      • if ($expr1)   return $expr2; else   return $expr3;
    • 当 $expr1 为 true、$expr2 没有任何设定(?:;),则会回传 $expr1

?? Null Coalescing Operator

  • $action = $expr1 ?? $expr2;
    • 当 $expr1 不为 null,return $expr1,否则 return $expr2。
    • if (isset($expr1) && !is_null($expr1))   return $expr1; else   return $expr2;

?? 与 ?: 的不同

  • ?: = if ($x) 判断是否为 true
  • ?? = if (isset($x) 判断是否 不为 null 且 没有设定值

测试程式

相关网页

想在手机阅读更多PHP资讯?下载【香港硅谷】Android应用
分享到Facebook