2010-12-03 11 views
16

en Böyle bir şey var diyelim:PHP if (koşul) yürütme

if(1 == 0 && do_stuff()) { 
    ... 
} 

Açıkçası 1 0 değil, bu yüzden diğer durumunu kontrol etmek anlamı yok. Yani PHP hiç do_stuff() mu?

+1

ikinci koşulu çalıştırmak asla yanlış ise, elbette ilk koşul olarak kullanabilsin diye Eğer. Detaylar için cevabımı görün. –

cevap

35

Hayır - PHP, temkinli değerlendirme (bazen kısa devre değerlendirmesi olarak adlandırılır) kullanır; bu nedenle, mantıksal AND içindeki ilk koşul yanlışsa, diğer koşullardan herhangi birini değerlendirmeyi denemez.

Benzer şekilde, bir OR yapıyor olsaydınız ve ilk koşul doğruysa, ikinciyi değerlendirmezdi.

+11

Bu nedenle – Gordon

+2

numaralı telefona pahalı testler yapmalısınız. Çoğu durumda değişkenlere karşı test edersiniz, bu nedenle testlerin maliyetleri önemsizdir. Ya da "asla" başarısız olan bir testiniz var (üretimde $ debug gibi). Daha sonra başka bir yaklaşım, muhtemelen başarısız olan testi sola koymaktır. – KingCrunch

+1

Bu, PHP hakkında kesinlikle doğrudur. Her neyse, JavaScript'deki aynı işlevselliğe göre bir fark yaratmaya değer. PHP'de sonuç her zaman bir boole değeridir, JavaScript'te ise son değerlendirilen alt ifadenin değeridir. – Ando

1

Hayır, bu durumda do_stuff() yürütmez.

4

ilk şart her zaman "do_stuf" yürütülecek istiyorsanız php & & operatör