PHP:分配NULL的变量,是真是假? NULL是什么?(PHP: Assigning of N

2019-10-20 03:08发布

在PHP:

$var = NULL;

这里发生了什么? 为null分配到$ VAR,或为$ VAR与未知的价值,因为分配NULL什么也不做产生的?

考虑一个for循环

$arr=array();
for($i=0;$arr[$i]=NULL;$i++){}

这并打破这个条件。 这一定意味着空的分配评估为FALSE,这意味着分配从未发生和$改编[0]未定值。 一的var_dump只会给

array(1) { [0]=> NULL }

但我从来没有一定要做出什么。 从我的推理与for循环上面我会假设在PHP是NULL表示“未定”,但到现在为止我一直相信,NULL是可以分配一个类型。 如果NULL实际上可以分配,那么for循环不应该打破为NULL的分配是TRUE。

读取http://php.net/manual/en/types.comparisons.php似乎NULL以某种方式确定,因为NULL和阵列()的严格比较为FALSE,这是很好的,但一个松散的比较结果为TRUE。 对我来说,这意味着NULL实际上是东西,而不是不确定的。

这在我看来,NULL并不完全一致。

我的问题要问你:什么是错我的逻辑是什么?

Answer 1:

 $var = NULL; 

这里发生了什么?

很简单:值null被分配到$var

是的, null是一种价值。 有规律的,正常的值。 null并不是布尔值,而不是数量,而不是别的。 null的类型为null ,这只能采取一种可能的值: nullnull通常用作占位符值,以表示“无值”。 但null只是本身就是一种完全正常的值和类型。 这里没什么好看的,离开。

for ($i = 0; $arr[$i] = NULL; $i++) { } 

这里null被分配到$arr[$i]在第一次循环。 赋值表达式本身然后返回所分配的值,即($arr[$i] = NULL)的计算结果为值null 。 该for循环再评估这个null来决定是否应该继续与否,由于null被视为等于false ,它停止。 这个循环的结果是:

array(1) { [0]=> NULL } 

即一个数组,其第一和唯一的索引是值null 。 仅此而已,无所不及。

如果NULL实际上可以分配,那么for循环不应该打破为NULL的分配是TRUE。

这就是你这里只是误会。 赋值表达式的结果是所分配的值 。 不是true 。 这就是为什么这个工程:

$a = $b = $c;

$a被分配的结果$b = $c ,这是$c

在所有这些例子,你可以更换nullfalse的确切同样的效果。



文章来源: PHP: Assigning of NULL to variable, TRUE or FALSE ? What is NULL?
标签: php null