调用unset变量不会在将其作为引用调用后抛出通知


Calling unset variable doesn't throw notice after calling it as a reference

这段代码中有3个var_dumps(第二个被注释掉了)。
如果我运行它,第一个和第三个var_dumps都会像预期的那样产生一个通知。
取消注释第二个var_dump后,第三个var_dump停止抛出通知。
我的问题是:为什么?
我仍然希望在那里有一个通知,因为在第3个var_dump中,我仍然读取了一个之前没有设置的变量(如isset所示)。

<?php
function nvl(&$var, $default = 'hello')
{
    return !isset($var) ? $default : $var;
}
var_dump($a, isset($a));
//var_dump(nvl($a), isset($a));
var_dump($a, isset($a));

因为可以将其传递给nvl作为引用,因此创建了$a

如果你从nvl第一个参数中删除&,你会得到3个通知。