在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并不完全一致。
我的问题要问你:什么是错我的逻辑是什么?
$var = NULL;
这里发生了什么?
很简单:值null
被分配到$var
。
是的, null
是一种价值。 有规律的,正常的值。 null
并不是布尔值,而不是数量,而不是别的。 null
的类型为null
,这只能采取一种可能的值: null
。 null
通常用作占位符值,以表示“无值”。 但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
。
在所有这些例子,你可以更换null
与false
的确切同样的效果。