奇怪的PHP号码问题

Here is the simple code:

$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;  
}

Here is the result:

Result:0int(0)
Here0int(0)

Its not supposed to enter into if block. Because $result is = 0. Not < 0.

Am I missing something or PHP handles this differently?

The comparison to null should be === instead of ==. Since null can evalulate to 0, the comparision evaluates (0 == null) = true

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

See http://php.net/manual/en/language.operators.comparison.php for more information

It looks like the cast to an int type is making your variable test incorrectly against 0.

Replace if( (int) $result ... with if( $result ...

Its not the first validation which matches:

var_dump(0 == null); //true
var_dump(false == null); //true