2011-12-29 5 views
17

可能性の重複:PHP整数比較0にtrueを返しますか?

$o['group'] = "prueba"; 
if($o['group'] == 0){ 
    die("test"); 
} 

なぜそれが印刷テスト:
Why does PHP consider 0 to be equal to a string?

私は、コードのこの部分を持っていますか?どのように文字列がゼロに等しい可能性がありますか?

+1

、文字列 'から "0" 'の両方等価演算子(' == ')とゼロに等しくなります。 –

+0

は空の文字列ではありません。 –

+6

@MichaelMior:そして数字に変換できない他の文字列。 –

答えて

18

あなたはそれが正確に0

の整数に文字列を比較するとき==は常にtrueと評価されますので、
if($o['group'] === 0){
のような正確なtypof 3つの等号を使用してみてください文字列に一致する場合'a string' == 0は、整数と比較したときに文字列が整数に変換されるため、trueと評価されます。 PHPが文字列を正しく変換できない場合は、0と評価されます。したがって、0は0に等しく、これは真となります。

here

PHP、空の文字列で
+1

まだ間違っています。 '' 0.1e2 '== 0'は真ですが、 '(int)' 0.1e2 '=== 0'は真です。文字列の内容によって、文字列がどのデータ型(* int *または* float *)に変換されるかが決まります。 – Gumbo

+0

はい、これはまだ間違っています。 $ o ['group'] == '0'の場合にのみ動作します –

関連する問題