2010-04-21 12 views
7

If ifadeleri arasında bu PHP arasındaki fark nedir?If ifadeleri ile bu PHP arasındaki fark nedir?

if ($var !== false) 
{ 
    // Do something! 
} 


if (false !== $var) 
{ 
    // Do something! 
} 

Zend Framework gibi bazı çerçeveler, geleneksel olanı iken en yeni formu kullanır.

Şimdiden teşekkürler

cevap

10

İfadenin sonucu aynıdır, ancak karşılaştırma yapmak yerine kendinizi atamadan korumanın iyi bir yoludur (örneğin, eğer ($ var == false) yerine if ($ var = false) yazıyorsanız, t "varyant" anahtar sözcüğüne $ var değerini atayın)

0

Gerçek bir fark yok. İşlenenler sadece farklı taraflardadır, ancak karşılaştırma yine de aynıdır.

1

İki ifade, semantik olarak aynıdır. Bu, sabit ifadeyi ilk önce mi yoksa sonuncusunu mı koymalı?

0

Fark yoktur. !==, 2 ifadeyi tip denetimi ile karşılaştırır ve eşit değilse true değerini döndürür. Fark, ifadelerin değerlendirme sırasına göre olabilir, ancak yazdığınız durumda, hiçbir fark yoktur (ve iyi bir program, bu ifadelerin yürütme sırasına güvenmemelidir).

0

bu senaryoyu düşünün:

if (strpos($string, $substring)) { /* found it! */ } 

$substring Eğer $string tam başında bulunursa, bu false olarak değerlendirilirse içine döndürülen değer, maalesef 0. , yani şartlı yürütülmez .

doğru yolu o olacaktır işlemek için:

if (false !== strpos($string, $substring)) { /* found it! */ } 

Sonuç:

false hep yanlış olması sağlanır. Diğer değerler bunu garanti edemez. Örneğin, PHP 3'te empty('0')true idi, ancak daha sonra false olarak değiştirildi.

+0

neden aşağı oyu ????? – Sarfraz

+0

Seni reddetmedim, ama soruya cevap vermedin. OP, 'if ($ var)'/'if (func())' ve 'if ($ expectedValue === $ var)'/'if ($ expectedValue === func() arasındaki farkı sormaz.), ancak neden if ifadesi koşullarında değişkenlerden önce sabitleri listelemek daha iyi bir fikir olur. – pinkgothic

2

Bu gerçekten bir tercih. Sen bunu iki şekilde, bir == b veya b koyabilirsiniz Eğer

if ($var == false) 

yaparsanız bir hata yapmak daha kolay yanlışlıkla bir = harfi ile yazarsanız == bir, ama çünkü durum eşit hep seveceğim

if (false == $var) 

gerçek ($ var başarıyla kurulacaktır çünkü), ancak dava ile artık in = koyarsanız, bir hata alırsınız.

+0

Nitpick: "yanlışlıkla bir = harf ile yazdığınızda, durum her zaman doğruya eşit olacaktır" - bu doğru değil. '($ var = false)', $ var = false ile aynıdır; eğer ($ var) '. Ergo, her zaman yanlış olarak değerlendirir. – pinkgothic