我想使用这样的代码:
$arr=array('a'=>$a);
但$a
未定义,因此出错。但是如果我在
if (!isset($a))
$a=null;
一切正常。为什么?在开始时$a
未定义,因此$a=null
。还是underfined!=NULL
?
答案 0 :(得分:6)
写作时
array("a"=>$a)
这意味着您希望键“a”指的是名为$ a的变量引用,它首先不存在,因此您会收到错误;但是当你添加
$a=null;
之前,虽然您将$ a设置为null但实际上您正在创建一个名为$ a的变量引用,这是PHP已知的,因此不会出现错误。
答案 1 :(得分:3)
是的,实际上undefined
!= null
,虽然区别在于PHP决定是否抛出错误。否则它是一样的。
答案 2 :(得分:3)
正如您已经发现undefined与null不同。
未定义意味着名称$ a尚未进入您的函数/代码范围。
$a=null
是分配给变量的(no)值。
顺便说一句,你应该得到一个通知,而不是使用未定义的变量作为正确值的错误,php警告你可能的拼写错误并继续执行脚本。
根据经验,如果你在赋值(=)simbol(一个左值名称)的左边处理一个未定义的变量,那么php会创建一个新的变量名称并将其绑定到当前作用域中,如果引用的话在右边(你使用的是包含的值而不是变量本身)php警告你并继续前进。您可以通过error_reporting 函数更改此行为。
答案 3 :(得分:-1)
如果var存在且返回TRUE,则返回TRUE 除NULL以外的值,为FALSE 否则。