if(NULL ==0){
echo "test". NULL;//output is test
echo "<br>";
echo "test". 0;//output is test0
}
如果条件说null和0都相等。但为什么我得到这个结果?
答案 0 :(得分:2)
答案 1 :(得分:1)
因为它取决于你是将0视为数字零(如无)或字符串(如字符'0')。
答案 2 :(得分:1)
NULL具有以下属性:
NULL == NULL为真,
NULL == FALSE为true。
并且与关系模型一致,NULL == TRUE失败
在这里,您将NULL与false进行比较,其输出在PHP中为真
答案 3 :(得分:1)
正如Nick已经说过的那样:在这种情况下,您将值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
语句为false。
答案 4 :(得分:0)
NULL
没有价值,在你的比较中它评估为False,0
也被评估为False(所以False == False,这是True),这就是为什么身体循环执行。
NULL
明确表示 “无价值” 。有关NULL
的确切内容,请参见the documentation。
答案 5 :(得分:0)
因为如果你用NOTHING(null)连接一个字符串,那么字符串将保留在它是,如果你用整数“0”连接,它将被转换为字符串(自动装箱)并连接到原始字符串。 ..
正常行为?
和“null == 0” - &gt;是的,但是“null === 0” - &gt;假...
你不仅要检查VALUE(两个itc都是“零”),你必须用“===”检查TYPE等式
答案 6 :(得分:0)
因为,NULL字符串无需打印。因此第一个echo语句连接:
"test" . NULL => "test" Then Nothing
虽然0是逻辑NULL,但是在String的情况下它打印为0。
答案 7 :(得分:0)
在PHP中,如果将任何值与数字进行比较,则该值将被类型化为Int或Float,然后进行比较。在您的情况下,NULL首先被类型化为Int,产生0,然后进行比较,提供TRUE。查看PHP type comparison和type juggling。