0

这是简单的代码:

$result = 0;
$result = $obj->delete($this_id);
echo "Result:" . $result;
var_dump($result);
if ( (int) $result < 0 || $result == null ) {
   echo "Here" . $result;
       var_dump($result);exit;  
}

结果如下:

Result:0int(0)
Here0int(0)

它不应该进入if块。因为 $result 是=0。不是<0。

我错过了什么还是 PHP 以不同的方式处理这个?

4

3 回答 3

2

与 null 的比较应该是===而不是==. 由于 null 可以计算为 0,因此比较计算 (0 == null) = true

if ( (int) $result < 0 || $result === null ) {

有关详细信息,请参阅http://php.net/manual/en/language.operators.comparison.php

于 2012-09-18T23:11:50.357 回答
0

看起来转换为 int 类型会使您的变量测试错误地针对 0。

替换if( (int) $result ...if( $result ...

于 2012-09-18T23:11:12.753 回答
0

它不是第一个匹配的验证:

var_dump(0 == null); //true
var_dump(false == null); //true
于 2012-09-18T23:12:25.703 回答