if(NULL ==0){
echo "test". NULL;//output is test
echo "<br>";
echo "test". 0;//output is test0
}
如果条件说 null 和 0 都相等。但是为什么我得到这个结果?
if(NULL ==0){
echo "test". NULL;//output is test
echo "<br>";
echo "test". 0;//output is test0
}
如果条件说 null 和 0 都相等。但是为什么我得到这个结果?
正如尼克已经说过的那样:在这种情况下,您正在将值添加0
到一个字符串,使其也成为一个字符串。这就是你获得价值的原因test0
。
此外,在您的 中if
,您正在检查零值,而不是严格的真假陈述:
<?php
if( NULL == 0 ) {
echo "test" . NULL;
echo "<br>";
echo "test" . 0;
}
?>
输出:
test
test0
现在试试这样:
<?php
if( NULL === 0 ) {
echo "test" . NULL;
echo "<br>";
echo "test" . 0;
}
?>
您将看到,您没有得到任何输出,因为现在该if
语句是错误的。
因为这取决于您将 0 视为数字零(如无)或字符串(如字符'0')。
PHP 中的 NULL 具有以下属性:
NULL == NULL 为真,
NULL == FALSE 为真。
并且符合关系模型,NULL == TRUE 失败
在这里,您将 NULL 与在 PHP 中输出为 true 的 false 进行比较
NULL
没有价值,在您的比较中,它的评估结果为 False,并且0
也被评估为 False(因此 False == False,即为 True),这就是循环体执行的原因。
NULL
明确表示“没有价值”。请参阅文档以了解究竟NULL
是什么。
因为如果你用NOTHING(null)连接一个字符串,字符串将保持原样,如果你用整数“0”连接,它将被转换为字符串(自动装箱)并连接到原始字符串......
正常行为?
和“null == 0”-> true,但是“null === 0”-> false...
您不仅要检查 VALUE (对于两个 itc 都将是“零”),您还必须使用“===”检查 TYPE 相等性
因为,NULL 字符串不会被打印。因此,第一个 echo 语句连接起来:
"test" . NULL => "test" Then Nothing
虽然 0 是逻辑 NULL,但在 String 的情况下它打印为 0。