文章目录
- 快速掌握
- ?: 短三元运算符
- ?? NULL 合并运算符
- 附上官方文档查阅方式
快速掌握
?: 短三元运算符
?: 称之为短三元运算符,它是我们熟悉的三元运算符(也叫做条件运算符)的一种特殊写法,也就是省略了三元运算符中间的部分。
-
复习一下三元表达式的语法:
(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 在这里仅执行一次)。<?php echo 0 ?: 1 ?: 2 ?: 3, PHP_EOL; //1 echo 0 ?: 0 ?: 2 ?: 3, PHP_EOL; //2 echo 0 ?: 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
搜索 ?: 或者 ??