php,对 NULL 变量的关键检查已设置,如何?

php, key check on NULL variable gets set, how to?

这是我的例子:

$data = null;

var_dump($data); // returns null

is($data['test']);

var_dump($data); // returns array (size=1)
                 //            'test' => null

function is(&$var, $default = null)
{
    return isset($var) ? $var : $default;
}

注意在我运行is($data['test'])之后,$data变成了$data['test'] = null

知道为什么会出现这种行为吗?

我正在寻找 null。我是运行宁php7

编辑:它是 & 符号,只是不确定为什么会产生那个结果

如果找不到密钥,请尝试使用 array_key_exists() 和 return null。

这个解决方案似乎可行,但不够优雅:

is($data, 'test');

var_dump($data); // returns array (size=1)
                 //            'test' => null

function is($var, $key, $default = null)
{
    return isset($var[$key]) ? $var[$key] : $default;
}

您不能将具有不存在键的变量传递给函数(即使有引用),因为该值将传递给函数。

如果我们有 $data 并且在下一行如果我们有 $data['test']$data 变量将被更新为一个数组。

所以在您的情况下,当您使用 is($data['test']); 时,它会更新变量。

然后进入函数,检查isset($var)。它已经设置,因为变量已经更新。所以 isset 得到 true return。 return 将包含更新后的变量 $data['test'].

我认为@Fred B 的解决方案适用于这种情况。