Derin bir soruya ipucu: olduğunda bir ifade doğru olmalıdır?
Aşağıda, ben açıklayacağım why ne yapıyorsun çalışmıyor ve how bunu düzeltmek için.
Birçok dilde null
, 0
, ve boş bir dize (""
), tüm yanlış olarak değerlendirmek, bu if
ifadeleri oldukça özlü yapabilirsiniz ve sezgisel, fakat null
, 0
ve ""
farklı türleri bulunmaktadır. Nasıl mukayese edilmelidir?
This page biz karşılaştırılan iki değişkenleri varsa aşağıdaki gibi, daha sonra değişkenler (ilk maçında tablo çıkarken) dönüştürülür söyler
Type of First Type of Second Then
null/string string Convert NULL to "", numerical/lexical comparison
bool/null anything Convert to bool, FALSE < TRUE
Yani bir dizi karşı boş karşılaştırdığınız. Bu nedenle, boş ve sayı hem boolean dönüştürülür. This page söyler böyle bir dönüşüm hem de null
ve 0
kabul edilir FALSE
.
Sizin ifade artık elbette, gerçek olan, false==false
, okur.
Ama ne istiyorsun.
This page PHP'nin karşılaştırma operatörleri bir listesini sağlar.
Example Name Result
$a == $b Equal TRUE if $a equals $b after type juggling.
$a === $b Identical TRUE if $a equals $b, AND they are of the same type.
$a != $b Not equal TRUE if $a not equals $b after type juggling.
$a <> $b Not equal TRUE if $a not equals $b after type juggling.
$a !== $b Not identical TRUE if $a not equals $b, or they are not of the same type.
$a < $b Less than TRUE if $a is strictly less than $b.
$a > $b Greater than TRUE if $a is strictly greater than $b.
$a <= $b Less than/equal TRUE if $a is less than or equal to $b.
$a >= $b Greater than/equal TRUE if $a is greater than or equal to $b.
İlk karşılaştırma şimdi kullandığınız karşılaştırma. Ben daha önce bahsedilen dönüşümleri gerçekleştirir unutmayın.
Ikinci karşılaştıncının kullanarak sorununuzu çözecektir. Boş ve bir sayı aynı tipte olmadığından, ===
karşılaştırma yerine ==
operatörü olduğu gibi tip dönüşümü gerçekleştirerek daha false dönecektir.
Umarım bu yardımcı olur.