PHP:将整数/字符串变量与Null进行比较

时间:2013-02-01 21:24:33

标签: php string comparison integer

我有一个Integer / String变量。如果我在mysqli语句中有错误,它将变为字符串并且没有错误,它将变为affected rows整数)的数字。

但是在PHP中如果我们有这样的东西:

$i = 0;
if ( $i < 0 || $i == null ) {
    var_dump($i);
}

我们有这个结果:

int 0

首先,我想知道为什么会这样? (我的意思是,如果var_dumpint 0,为什么 if 语句不起作用?)

第二次,我想要比较的解决方案。

6 个答案:

答案 0 :(得分:3)

您是在比较0 == null是否相等,而不是identical,根据documentation,它是相同的:

  

以下内容被认为是空的:

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
$var; (a variable declared, but without a value)

答案 1 :(得分:2)

那是因为你使用==。只要一个操作数是null - 然后另一个操作数被隐式地转换为布尔值0 - &gt; false

http://php.net/manual/en/language.operators.comparison.php

  

bool或null任何转换为​​bool,FALSE&lt; TRUE

答案 2 :(得分:2)

您没有进行严格的比较。 使用===代替==

==会转换类型,然后进行比较

请改用以下其中一项。 is_null是最干净的IMO。

if ( $i < 0 || $i === null ) {..}

OR

if ( $i < 0 || is_null($i)) {..}

答案 3 :(得分:2)

您需要比较类型

var_dump($i == null); //true
var_dump($i === null); //false

您可以使用

$i = 0;
if ( $i < 0 || $i === null ) {
    var_dump($i);
}

答案 4 :(得分:1)

使用===比较器

if ( $i < 0 || $i === null ) { var_dump($i); }

答案 5 :(得分:1)

使用is_null()功能。

if ( $i < 0 || is_null($i) ) {