奇怪的空问题

kus*_*agi 1 php null

我想使用这样的代码:

$arr=array('a'=>$a);
Run Code Online (Sandbox Code Playgroud)

$a没有定义,所以我得到错误.但如果我之前写这个代码

if (!isset($a))
$a=null;
Run Code Online (Sandbox Code Playgroud)

一切都有效.为什么?在开始时$a没有定义,所以$a=null.还是underfined!=NULL

Bea*_*692 6

当你写作

array("a"=>$a) 
Run Code Online (Sandbox Code Playgroud)

这意味着您希望键"a"指的是名为$ a的变量引用,它首先不存在,因此您会收到错误; 但是当你添加

$a=null;
Run Code Online (Sandbox Code Playgroud)

虽然您将$ a设置为null,但实际上您正在创建一个名为$ a的变量引用,这是PHP已知的,因此不会出现错误.

  • 换句话说,PHP有一个包含所有变量及其值的内部表(实际上,几个表,每个函数范围一个,但除此之外).当您的代码对变量执行某些操作时,PHP会在表中查找其值.如果它不存在,则会得到错误,并且该值被假定为"null".但是`$ a = null`将变量名称添加到表中并将值显式设置为"null". (2认同)