在PHP中为变量赋值NULL:这有什么作用?

时间:2012-06-22 14:57:32

标签: php null

在维护代码时,我遇到了循环,在循环结束时,几个变量设置为NULL,如下所示:$var = NULL;。根据我在手册中的理解,NULL主要用于在PHP代码中进行比较。由于NULL没有类型且不是字符串或数字,因此输出它是没有意义的。

我遗憾的是无法提供示例,但我认为NULL值正在写入我们代码中的文件。我的问题是:$var在赋值后是否有值,并且会回显/写入它产生输出?

编辑: 我已阅读 NULL上的PHP手册条目。没有必要在评论或回答中发布此http://php.net/manual/en/language.types.null.php,或者在没有RTM的情况下向我推荐。谢谢!

6 个答案:

答案 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中的空意味着变量没有赋值。

http://php.net/manual/en/language.types.null.php

答案 4 :(得分:0)

基于提供的信息,null实现的目的似乎是清除变量。

您可以通过将变量设置为NULL或使用函数unset()来取消设置PHP中的变量。

  

unset()会破坏指定的变量。

     

函数内部的unset()行为可能会有所不同   你试图破坏什么类型的变量。

     

如果全局化变量在函数内部未设置(),则只有   局部变量被破坏。调用环境中的变量   将保留与调用unset()之前相同的值。

答案 5 :(得分:-1)

Null是一种特殊的数据类型,它只能有一个值,这本身就是一个值。也就是说null不仅是数据类型而且是关键字文字数据类型的变量null是在没有值的情况下创建变量时没有为其赋值的变量,它自动赋值为null这是以便清除之前该内存位置中的任何垃圾,否则程序可能会尝试处理它