php çözme garip mantıksal ifade

1 Cevap php
$foo = 0;

if($foo == 'on') $foo = 1;

echo $foo;

Yukarıdaki kod çıkışları "0" beklenmelidir. Bu şekilde TRUE in $foo == 'on' sonuçlar, bu besbelli yanlıştır değildir rağmen ancak. Ile ifade değiştirilmesi $foo === 'on' doğru cevabı verir, bu yüzden bazı yazarak sorun olabilecek herhangi bir şüpheleri teyit edilecek gibi görünüyor.

Yine de, nasıl PHP $foo ve 'on' hatta aynı türden değilse $foo 'on' olduğunu düşünüyorum edebilir? Bu bir hata veya bazı garip bir özellik midir?

1 Cevap

this is a documented behaviour:

Eğer bir dize ile bir tamsayı karşılaştırırsak, dize bir sayıya dönüştürülür. İki sayısal dizeleri karşılaştırmak, bunlar tamsayılar olarak karşılaştırılır. Bu kurallar aynı zamanda switch deyimi için geçerlidir.