11

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

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

编辑: 我已阅读 .php 上的 PHP 手册条目 NULL。无需在评论或答案中发布此:http : //php.net/manual/en/language.types.null.php,或者因没有 RTM 而自上而下投票给我。谢谢!

4

6 回答 6

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。

耶 PHP。

于 2012-06-22T15:04:26.070 回答
2

null几乎就像 PHP 中的任何其他值一样(实际上,它也是与字符串、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) { ... }
}
于 2012-06-22T15:01:02.390 回答
1

PHP 中的 Null 表示没有为变量赋值。

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

于 2012-06-22T15:01:58.577 回答
1

可以将变量设置为NULL以指示它不包含值。如果稍后在代码中检查变量是否存在,这是有道理的NULL

变量可能被显式设置为 NULL 以释放它使用的内存。如果变量消耗大量内存,这是有道理的(请参阅此问题)。

干运行代码,您也许能够找出确切的原因。

于 2012-06-22T15:44:04.780 回答
0

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

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

unset() 销毁指定的变量。

函数内部 unset() 的行为可能因您尝试销毁的变量类型而异。

如果一个全局变量在函数内部是 unset() ,则只有局部变量被销毁。调用环境中的变量将保留与调用 unset() 之前相同的值。

于 2012-06-22T15:04:19.017 回答
-1

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

于 2015-09-10T23:26:38.773 回答