我想用这样的代码:没有定义奇怪的空问题
$arr=array('a'=>$a);
但$a
,所以我得到的错误。但如果我之前写这个代码
if (!isset($a))
$a=null;
所有的作品。为什么? $a
开头没有定义,所以$a=null
。或underfined!=NULL
?
我想用这样的代码:没有定义奇怪的空问题
$arr=array('a'=>$a);
但$a
,所以我得到的错误。但如果我之前写这个代码
if (!isset($a))
$a=null;
所有的作品。为什么? $a
开头没有定义,所以$a=null
。或underfined!=NULL
?
当你写
array("a"=>$a)
这意味着你想要的关键“一”是指一个名为变量引用$一个不首先存在这样你得到一个错误;但是当你添加
$a=null;
手之前,虽然你设置$一个为空,但实际上你正在创建一个名为$多数民众赞成由PHP已知的所以不会有错误的变量引用。
换句话说,PHP有一个包含所有变量及其值的内部表(实际上,几个表对于每个函数范围都有一个表,但除此之外)。当你的代码对某个变量做某些事情时,PHP会在表中查找它的值。如果它不在那里,你会得到错误,并且该值被假定为'null'。但是'$ a = null'将变量名添加到表中,并将该值明确地设置为'null'。 – 2011-05-10 07:36:23
是的,说实话undefined
!= null
,虽然差别只在PHP的眼睛,当它决定是否抛出异常与否。否则,它是一回事。
正如您已经发现undefined与null不同。
未定义表示名称$ a尚未纳入函数/代码的范围。 $a=null
是分配给变量的(否)值。
顺便说一句,你应该得到一个通知,而不是一个错误,因为使用未定义的变量作为右值php警告你可能的错字,并继续脚本执行。作为一个经验法则,如果您在赋值(=)simbol(左值名称)的左侧处理一个未定义的变量,则php会创建一个新变量名称并将其绑定到当前作用域中,如果参考是在右边(你使用的是包含的值而不是变量本身)PHP警告你并继续前进。您可以通过error_reporting函数更改此行为。
尝试'var_dump($ a)'; – diEcho 2011-05-10 07:25:31
我收到未定义的变量 – kusanagi 2011-05-10 07:26:39
是您的错误只是一个通知? – 2011-05-10 07:27:58