> For the complete documentation index, see [llms.txt](https://php7.shujuwajue.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://php7.shujuwajue.com/php-70x-xin-te-xing/xin-zeng-cao-zuo-fu/null-he-bing-yun-suan-fu-ff083f3f-ff09.md).

# null 合并运算符（??）

三元运算符经常用到，三元运算符只需一行代码就可以实现`if-else`的功能。如：

```php
$post = ($_POST['title']) ? $_POST['title'] : NULL;
```

以上代码理想状态是对的，但是当`$_POST、$_POST['title']`不存在，或者为null时，PHP就会抛出 `Notice: Undefined index: title in ...` 错误。为了解决和这个问题，一般这样写

```php
$post = isset($_POST['title']) ? $_POST['title'] : NULL;
```

这样写解决了报错的问题，但是重复书写了代码。PHP7中合并运算符，在第一个操作数存在时，可以直接返回，不然则返回第二个操作数，代码如下：

```php
$post = $_POST['title'] ?? NULL;
```

合并运算符检查`$_POST['title']，`是否存在如果存在则返回`$_POST['title']`，否则返回NULL

**合并运算符的另一个的好处是可以连续使用**，代码如下：

```php
$title = $_POST['title'] ?? $_GET['title'] ?? 'No POST or GET';
```

上面的代码执行时会先检查第一个操作符是否存在，若存在则直接返回，若不存在则检查第二个操作数。此时第二个合并操作符开始生效，它会检查第二个操作数是否存在，若存在则返回，若不存在则返回右边的值。

如果用老的代码为：

```php
if (isset($_POST['title'])) {
    $title = $_POST['title'];
} elseif (isset($_GET['title'])) {
    $title = $_GET['title'];
} else {
    $title = 'No POST or GET';
}
```
