这段代码中有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个通知。