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 に答える