在维护代码时,我遇到了循环,在循环结束时,几个变量设置为NULL
,如下所示:$var = NULL;
。根据我在手册中的理解,NULL主要用于在PHP代码中进行比较。由于NULL
没有类型且不是字符串或数字,因此输出它是没有意义的。
我遗憾的是无法提供示例,但我认为NULL值正在写入我们代码中的文件。我的问题是:$var
在赋值后是否有值,并且会回显/写入它产生输出?
编辑: 我已阅读 NULL
上的PHP手册条目。没有必要在评论或回答中发布此http://php.net/manual/en/language.types.null.php,或者在没有RTM的情况下向我推荐。谢谢!
答案 0 :(得分:3)
[ghoti@pc ~]$ php -r '$i="foo"; print "ONE\n"; var_dump($i); unset($i); print "TWO\n"; var_dump($i); $i=NULL; print "THREE\n"; var_dump($i); print "\n"; if (isset($i)) print "Set.\n"; if (is_null($i)) print "is_null\n";'
ONE
string(3) "foo"
TWO
NULL
THREE
NULL
is_null
[ghoti@pc ~]$
isset()
的结果将是布尔值false,但仍然定义了该变量。 isset()
函数更好地命名为isnotnull()
。 :-P
请注意,对于从未设置的值,is_null()
也将返回true。
Yay PHP。
答案 1 :(得分:1)
null
与PHP中的任何其他值非常相似(实际上,它也是与string,int等不同的数据类型)。
但是,有一个重要区别:isset($var)
检查var是否存在并且具有非空值。
如果您计划在分配新值之前再次阅读变量,unset()
是错误的方法,但分配null
完全没问题:
php > $a = null;
php > if($a) echo 'x';
php > unset($a);
php > if($a) echo 'x';
Notice: Undefined variable: a in php shell code on line 1
php >
正如您所看到的,unset()
实际上删除了变量,就像它从未存在过一样,而分配null
会将其设置为特定值(并在必要时创建变量)。
当你想知道它是否被提供时,null
的有用用例是默认参数,空字符串,零等也是有效的:
function foo($bar = null) {
if($bar === null) { ... }
}
答案 2 :(得分:1)
可以将变量设置为NULL
以指示它不包含值。如果在代码中的某个稍后点检查变量是NULL
,那么这是有意义的。
变量可以显式设置为NULL以释放它使用的内存。如果变量消耗大量内存(参见this question)。
,这是有意义的干运行代码,你或许可以找出确切的原因。
答案 3 :(得分:0)
PHP中的空意味着变量没有赋值。
答案 4 :(得分:0)
基于提供的信息,null实现的目的似乎是清除变量。
您可以通过将变量设置为NULL或使用函数unset()来取消设置PHP中的变量。
unset()会破坏指定的变量。
函数内部的unset()行为可能会有所不同 你试图破坏什么类型的变量。
如果全局化变量在函数内部未设置(),则只有 局部变量被破坏。调用环境中的变量 将保留与调用unset()之前相同的值。
答案 5 :(得分:-1)
Null是一种特殊的数据类型,它只能有一个值,这本身就是一个值。也就是说null不仅是数据类型而且是关键字文字数据类型的变量null是在没有值的情况下创建变量时没有为其赋值的变量,它自动赋值为null这是以便清除之前该内存位置中的任何垃圾,否则程序可能会尝试处理它