奇怪的空问题

时间:2011-05-10 07:22:15

标签: php null

我想使用这样的代码:

$arr=array('a'=>$a);

$a未定义,因此出错。但是如果我在

之前编写这段代码
if (!isset($a))
$a=null;

一切正常。为什么?在开始时$a未定义,因此$a=null。还是underfined!=NULL

4 个答案:

答案 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)

请参阅manual of isset

  

如果var存在且返回TRUE,则返回TRUE   除NULL以外的值,为FALSE   否则。

相关问题