PHP boş sıfıra eşit olduğunu düşündüğü

8 Cevap php

In php, ($myvariable==0) When $myvariable is zero, the value of the expression is true; when $myvariable is null, the value of this expression is also true. How can I exclude the second case? I mean I want the expression to be true only when $myvariable is zero. Of course I can write

($myvariable!=null && $myvariable==0 )

ancak bunu yapmak için diğer şık bir yolu vardır?

8 Cevap

$myvariable === 0

hakkında daha fazla bilgi comparison operators.

Php fonksiyonu === operatör ile birlikte is_null( ) işlevini kullanın. !== da beklediğiniz şekilde çalışır.

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.

$myvariable===0


$a === $b

$ A $ b eşit olduğunu ve aynı tür ise DOĞRU Özdeş

Bir is_null function, but this will just replace your $myvariable!=null var

($myvariable === 0) hangi tip zorlama gerçekleştirmez sahipsiniz.

Senin sıfır bir dize olabilir, ayrıca considere "sıfır dizesini" kontrol edilmelidir

($myvariable === 0 || $myvariable === '0')