2012-10-17 10 views
7

PHP'de, aynı karşılaştırma işlecinden önce ya boole ya da null değerini yerleştirmenin altında yatan sebep nedir?Karşılaştırma işleminden önce boolean veya null yerleştirmenin bir nedeni nedir?

false === $value; 
null === $value; 

O sadece kişisel bir tercih mi, yoksa insanlar bunu neden somut bir neden yoktur o

$value === false; 

söyleyerek aynı olduğunu bana öyle geliyor?

+0

olası kopyası [Referans - Bu sembol PHP'de ne anlama geliyor?] (Http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – rekire

+1

O isn Bazı operatörün ne yaptığını sormak, neden Yoda karşılaştırmaları yapılacağını soruyor. – Gromer

cevap

12

Bir değişkenin yanlışlıkla atanması hatasını önlemek için bir kuraldır. yerine

$value === false; 
+1

+1, Sebebini bilmek önemlidir! Yanlışlıkla "false = $ value" yazarsanız, yanlışlıkla bir değişken atayacağınız '$ value = false'den farklı olarak bir hata veya uyarı alırsınız. (@upply yazdı) –

+0

@OfirBaruch: Bu argümanı anladım Gerçekten yapıyorum ama hala daha az inandırıcı buluyorum. İnsanların çoğu kendi koşullarını başka şekilde yazarlar. Bu stili benimserken, '' ($ false === $ value ')' un neden olduğu hataların üstesinden gelmenin kolay bir yoludur. Ayrıca, bir takımda çalışırken, bu birçok kişinin değişeceği, alışkanlıklarına uyması için bir kod niteliğidir ve bazen 'git suçunu' biraz anlamsız hale getirir. Ancak bu cevap için +1: iyi bir nokta –

+0

Sadece bir kongre. Ben nadiren kullanırım. Bana garip geliyor. Benim için, eğer (false === ($ file = fopen ("example.txt", "r"))) die ("FAIL")) gibi özel durumlarda daha anlamlı olur. – nalply

4

Bu,

$value = false; 

bazen olarak Yoda-şartlarda anılır, eğlenceli list of all such constructs ve bunların gayri resmi isimleri var.

$var === false veya false === $var arasında gerçek bir fark yok, bazı kişiler boole sol işlenense, başka nefretse kontrol edilmesinin daha kolay olduğunu iddia ediyorlar ... Kısacası: kişisel tercih, ne olduğu.

+0

+1, mutlaka okunmalıdır! –

+0

+1 Yoda Çok seviyorum. – nalply

+0

Bağlantı için teşekkürler. Çevrimiçi cevap ararken arama terimlerini bilmek yararlıdır. – Ken

-1

Daha hızlı olması gerekiyordu, ancak bunu basit bir Google aramasıyla söyleyen bir yetkiliye yardım edemem. Bkz:

http://forums.phpfreaks.com/topic/222939-is-there-a-difference-between-ifvar-false-and-iffalse-var/

bir görüş.

+0

Trollish olmaya çalışmıyorum, ama birinin fikrinin bir özetini yazmanın pek bir noktasını göremiyorum. Onun fikrini test ettim ve o haklı, ama sadece ölçekte; 100M işlemlerinde 1-1,5 saniye demek. Bkz. Http://pastebin.com/XsQ8ypPS –

+0

Oh ve bir cevabı aşağıda işaretleyelim, ardından açıklama isteyin ve sonra soruyu silin. İyi değil. –

+0

Bu benim. Bu forumun bir özetini yazmanın imkansız olduğunu anladım. Bu yüzden özeti yazma isteğini kaldırdım. Ardından cevabını ben çektim çünkü StackOverflow'un bir foruma bağlanmasında yardımcı olmadığını düşünüyorum. Lütfen, neden yardımcı olmadığına dair SSS bölümünü okuyun. – nalply

İlgili konular