2011-08-30 17 views
5

私のコードでは次のようなif文がありました。使用

$a = '0'; 

$a = 0; 
if($a == 'something') 
{ 
//this was being output when I didn't want it to be 
} 

はそれを固定し、私は本当にここで何が起こっているのか分かりません。

答えて

4

1は文字列、1は整数です。あなたのケースでは

(0 == '0') // true 
(0 === '0') // false (types don't match). 

、you'rは「何か」という文字列に整数0を比較する:必要に応じてPHPは、あなたが「厳しい」演算子を使用している場合を除き、両者の間に変換します。 PHPは文字列「何か」を整数に変換します。そこに数字がまったくない場合、それは整数0に変換され、これはあなたの比較を真にします。

+0

すばやく、ありがとう! – Josh

2

ちょうど推測ですが、文字列を整数にキャストしようとしていると仮定します。

intval('something')私は、あなたが文字列に数値($a = 0;)とを比較し、0

0

を返すことを期待しています。この場合、文字列は数値にキャストされ、最初に数字がない場合、PHPは文字列を0にキャストします。つまり、真のです。

しかし、別のケースでは2つの文字列が異なるので、falseです。

関連する問題