为什么我在php中得到这个结果?

时间:2012-08-23 06:11:56

标签: php

 if(NULL ==0){
             echo "test". NULL;//output is test
             echo "<br>";
             echo "test". 0;//output is test0

             }

如果条件说null和0都相等。但为什么我得到这个结果?

8 个答案:

答案 0 :(得分:2)

您使用了宽松比较 ==。如果您使用严格比较 ===,那么您会发现差异。

了解更多:

type comparison table

NULL in PHP

答案 1 :(得分:1)

因为它取决于你是将0视为数字零(如无)或字符串(如字符'0')。

答案 2 :(得分:1)

PHP中的

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 comparisontype juggling