0


彻底搞懂 PHP 运算符 ?: 和 ??

文章目录

快速掌握

?: 短三元运算符

?: 称之为短三元运算符,它是我们熟悉的三元运算符(也叫做条件运算符)的一种特殊写法,也就是省略了三元运算符中间的部分。

  • 复习一下三元表达式的语法:(expr1) ? (expr2) : (expr3) 在 expr1 求值为 true 时的值为 expr2,在 expr1 求值为 false 时的值为 expr3。<?php// 三元运算符的例子$action=(empty($_POST['action']))?'default':$_POST['action'];// 以上等同于以下的 if/else 语句if(empty($_POST['action'])){$action='default';}else{$action=$_POST['action'];}?>
  • 省略三元运算符中间部分的语法:expr1 ?: expr3 如果 expr1 求值为 true 时返回 expr1 的结果,否则返回 expr3(expr1 在这里仅执行一次)。<?phpecho0?:1?:2?:3,PHP_EOL;//1echo0?:0?:2?:3,PHP_EOL;//2echo0?:0?:0?:3,PHP_EOL;//3?>

?? NULL 合并运算符

?? 语法:

(expr1) ?? (expr2)

当 expr1 为 null,表达式 (expr1) ?? (expr2) 等同于 expr2,否则为 expr1。

下面是设置默认值的示例:

<?php// NULL 合并运算符的例子$action=$_POST['action']??'default';// 以上例子等同于于以下 if/else 语句if(isset($_POST['action'])){$action=$_POST['action'];}else{$action='default';}?>
  • null 合并运算符的优先级较低。 这意味着如果将它与其它运算符(比如字符串链接或者算术运算符)混合使用,可能需要括号。请看下面的示例:<?php// $name 未定义,引发警告。print'Mr. '.$name??'Anonymous';// 打印 "Mr. Anonymous"print'Mr. '.($name??'Anonymous');?>
  • 嵌套 NULL 合并运算符的示例:<?php$foo=null;$bar=null;$baz=1;$qux=2;echo$foo??$bar??$baz??$qux;// 输出 1?>

附上官方文档查阅方式

  • 在线文档链接 php.net 比较运算符,打开网页后 Ctrl+F搜索 ?: 或者 ??
  • 离线文档 依次打开目录节点:目录 -> PHP 手册 -> 语言参考 -> 运算符 -> 比较运算符,同样Ctrl+F搜索 ?: 或者 ??
标签: php

本文转载自: https://blog.csdn.net/assokoo123/article/details/132572104
版权归原作者 西涯三锋 所有, 如有侵权,请联系我们删除。

“彻底搞懂 PHP 运算符 ?: 和 ??”的评论:

还没有评论