PHP 7 新增加的 NULL 合并运算符(??)是用于执行isset()检测的三元运算的快捷方式。
NULL 合并运算符会判断变量是否存在且值不为NULL,如果是,它就会返回自身的值,否则返回它的第二个操作数。
以前我们这样写三元运算符:
$site = isset($_GET[‘site’]) ? $_GET[‘site’] : ‘菜鸟教程’;
现在我们可以直接这样写:
$site = $_GET[‘site’] ?? ‘菜鸟教程’;
实例
<?php
// 获取 $_GET[‘site’] 的值,如果不存在返回 ‘菜鸟教程’
$site = $_GET[‘site’] ?? ‘菜鸟教程’;
print($site);
print(PHP_EOL); // PHP_EOL 为换行符
// 以上代码等价于
$site = isset($_GET[‘site’]) ? $_GET[‘site’] : ‘菜鸟教程’;
print($site);
print(PHP_EOL);
// ?? 链
$site = $_GET[‘site’] ?? $_POST[‘site’] ?? ‘菜鸟教程’;
print($site);
?>
以上程序执行输出结果为:
菜鸟教程
菜鸟教程
菜鸟教程
2 篇笔记写笔记
- 百里fre*@126.com15?? 与 ?: 的区别$a = 10;
var_dump($a ?? “a”); // 相当于: isset($a) ? $a : ‘a’ => 输出 10
var_dump($a ?: “b”); // 相当于: $a ? $a : ‘a’ =>输出 10如果:$a = false;
var_dump($a ?? “a”); // 相当于: isset($a) ? $a : ‘a’ => 输出 false
var_dump($a ?: “b”); // 相当于: $a ? $a : ‘a’ =>输出 10百里百里fre*@126.com2年前 (2019-10-15) - coco149*0895@qq.com0如上?? 与 ?: 的区别**中,第二种情况:$a = false;
var_dump($a ?? “a”); // 相当于: isset($a) ? $a : ‘a’ => 输出 false
// 这句话的注释应为 相当于:$a ? $a : “b” => 输出 b。
var_dump($a ?: “b”); // 相当于: $a ? $a : ‘a’ =>输出 10cocococo149*0895@qq.com3个月前 (02-21)