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

             }

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

4

8 回答 8

2

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

阅读更多 :

type comparison table

NULL in PHP

于 2012-08-23T06:14:26.950 回答
1

正如尼克已经说过的那样:在这种情况下,您正在将值添加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语句是错误的。

于 2012-08-23T06:21:54.533 回答
1

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

于 2012-08-23T06:13:56.453 回答
1

PHP 中的 NULL 具有以下属性:
NULL == NULL 为真,
NULL == FALSE 为真。
并且符合关系模型,NULL == TRUE 失败

在这里,您将 NULL 与在 PHP 中输​​出为 true 的 false 进行比较

于 2012-08-23T06:15:49.330 回答
0

NULL没有价值,在您的比较中,它的评估结果为 False,并且0也被评估为 False(因此 False == False,即为 True),这就是循环体执行的原因。

NULL明确表示“没有价值”。请参阅文档以了解究竟NULL是什么。

于 2012-08-23T06:14:15.910 回答
0

因为如果你用NOTHING(null)连接一个字符串,字符串将保持原样,如果你用整数“0”连接,它将被转换为字符串(自动装箱)并连接到原始字符串......

正常行为?

和“null == 0”-> true,但是“null === 0”-> false...

您不仅要检查 VALUE (对于两个 itc 都将是“零”),您还必须使用“===”检查 TYPE 相等性

于 2012-08-23T06:15:36.247 回答
0

因为,NULL 字符串不会被打印。因此,第一个 echo 语句连接起来:

"test" . NULL => "test" Then Nothing

虽然 0 是逻辑 NULL,但在 String 的情况下它打印为 0。

于 2012-08-23T06:15:43.837 回答
0

在 PHP 中,如果您将任何值与数字进行比较,则该值将被类型转换为 Int 或 Float,然后进行比较。在您的情况下,首先将 NULL 类型转换为 Int,这会产生 0,然后进行比较,得到 TRUE。检查PHP 类型比较类型杂耍

于 2012-08-23T06:19:03.613 回答