如php手册中所述
没有必要在PHP中初始化变量,但这是一个非常好的做法。未初始化的变量具有其类型的默认值,具体取决于使用它们的上下文 - 布尔值默认为FALSE,整数和浮点数默认为零,字符串(例如,在echo中使用)设置为空字符串,数组变为空阵列
如果是,那么为什么在尝试访问未初始化的变量时会出现错误(通知)?像
echo $x;
即使在消息
之后的脚本中也会返回注意:未定义的变量:x ...
但是当我将$x
声明为NULL
时,它不是通过任何通知或错误而且工作得很好
$x = NULL;
echo $x;
现在我的问题是为什么如果没有宣布像$x = NULL
或$x = ''
那样通知,尽管未声明的变量初始化为NULL
,这在“手册”中有明确提及? ?
我有一个脚本和许多未初始化的变量,并遇到了这个问题。
答案 0 :(得分:3)
我认为您需要更好地了解可变生命周期。由于PHP是运行时解释语言使用后期绑定;例如:
$null=null;
$empty="";
$true=true;
unset($undefined);
这将导致:
isset($undefined): false
empty($undefined): true
is_null($undefined): true
isset($null): false
empty($null): true
is_null($null): true
isset($empty): true
empty($empty): true
is_null($empty): false
isset($true): true
empty($true): false
is_null($true): false
从中可以看出,从空变量到未定义的变量没有区别。
解决方案:
使用isset
来阻止这些警告
答案 1 :(得分:0)
我认为如果你用$ x uninitialized throws做回音警告,因为这些变量没有任何内存储备。
在另一种情况下,当你执行$ x = null时,你会为$ x变量保留内存,尽管你没有给它赋值。
答案 2 :(得分:0)
声明和初始化之间存在巨大差异。你需要在使用它之前声明一个变量,但是你不必对它进行初始化。