此代码中有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));
答案 0 :(得分:0)
因为在创建参考nvl
时能够将其传递给$a
。
如果您从nvl first arg中删除&
,则会收到3条通知。