首页 > 解决方案 > 关于 PHP 空值合并运算符

问题描述

我认为以下代码因尝试在 null 上读取属性“hoge”而失败。

$a = null;
$result = $a->hoge->hoge ?? 'default';
print_r($result);

但它工作正常。为什么这段代码可以正常工作?

标签: php

解决方案


$result 的值将是“默认”,因为您使用了 ?? 操作员

在 $result = $a->hoge->hoge ?? 'default',它将首先检查 $a 是否存在,如果它存在,那么它将检查它是否具有 hoge 属性,如果它具有该属性,那么它将检查该 hoge 属性是否具有 hoge 以及是否具有然后它会将它的值分配给 $result 变量,但在您的代码中 $a 没有任何属性,然后它将第二个值“默认”分配给 $result

您也可以在没有定义 $a 的情况下运行此代码,并且我仍在使用它来将其值分配给 $result,但尽管 $a 甚至不存在,所以将分配第二个值

$result = $a->hoge->hoge ?? 'default';
print_r($result);

简而言之,它将检查第一个值是否存在,如果存在则分配它的值,否则它将分配第二个值给 ?? 操作员


推荐阅读