调用未设置的变量后,将其作为参考调用后不会发出通知

时间:2016-08-12 06:15:01

标签: php

此代码中有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));

1 个答案:

答案 0 :(得分:0)

因为在创建参考nvl时能够将其传递给$a

如果您从nvl first arg中删除&,则会收到3条通知。