[关闭]
@Chiang 2020-02-16T17:45:32.000000Z 字数 748 阅读 607

PHP NULL 合并运算符

PHP7新特性 2020-02


PHP 7 新增加的 NULL 合并运算符(??)是用于执行isset()检测的三元运算的快捷方式。

NULL 合并运算符会判断变量是否存在且值不为NULL,如果是,它就会返回自身的值,否则返回它的第二个操作数。

以前我们这样写三元运算符:

  1. $site = isset($_GET['site']) ? $_GET['site'] : '菜鸟教程';

现在我们可以直接这样写:

  1. $site = $_GET['site'] ?? '菜鸟教程';

实例

  1. <?php
  2. // 获取 $_GET['site'] 的值,如果不存在返回 '菜鸟教程'
  3. $site = $_GET['site'] ?? '菜鸟教程';
  4. print($site);
  5. print(PHP_EOL); // PHP_EOL 为换行符
  6. // 以上代码等价于
  7. $site = isset($_GET['site']) ? $_GET['site'] : '菜鸟教程';
  8. print($site);
  9. print(PHP_EOL);
  10. // ?? 链
  11. $site = $_GET['site'] ?? $_POST['site'] ?? '菜鸟教程';
  12. print($site);
  13. ?>

以上程序执行输出结果为:

  1. 菜鸟教程
  2. 菜鸟教程
  3. 菜鸟教程

?? 与 ?: 的区别

  1. $a = 10;
  2. var_dump($a ?? "a"); // 相当于: isset($a) ? $a : 'a' => 输出 10
  3. var_dump($a ?: "b"); // 相当于: $a ? $a : 'a' =>输出 10

如果:

  1. $a = false;
  2. var_dump($a ?? "a"); // 相当于: isset($a) ? $a : 'a' => 输出 false
  3. var_dump($a ?: "b"); // 相当于: $a ? $a : 'a' =>输出 10

参考资料:
新特性
PHP NULL 合并运算符

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注