Boole değerleri için PHP IF deyimi: $ var === $ true var vs

5 Cevap php

Bu soru gerçekten önemli değil .. ancak ben merak ettik biliyorum:

Ifadeleri kullanmak için en iyi ve en hızlı IF aşağıdakilerden hangisi?

<?php

$variable = true;

if($variable === true)
{
    //Something
}

if($variable)
{
    // Something
}


?>

Ben === tam boolean değerini maç olduğunu biliyorum. Ancak herhangi bir gelişme gerçekten var mı?

5 Cevap

Kullanımı if ($var === true) veya if ($var) tarzı bir soru ama doğruluğu bir soru değildir. if ($var) ile aynı olduğu için if ($var == true). Ve == karşılaştırma türünü kontrol etmez. Yani 1 == true doğrudur ama 1 === true yanlıştır.

Sadece bir gerçektir:

time php -r '$r = true; for($i = 0; $i < 10000000; $i++) { if($r == true) {} }'

time php -r '$r = true; for($i = 0; $i < 10000000; $i++) { if($r) {} }'

İkinci bir ilk daha hızlıdır.

=== Ilk iğne samanlıkta 0 konumunda iken strstr / stristr gerçekten yararlıdır. Eğer === veya! Kullanmak istemiyorsanız == elinizde bir hata olabilir.

$str = "four score and...";
$position = strstr($str,'four');
if($position===FALSE) return FALSE;

Bildiğim kadarıyla hızı gibi, ben Niels katılıyorum, muhtemelen ihmal edilebilir bulunuyor.

Deyimi ile test etmek için iyi ise Bildiğim kadarıyla, cevap muhtemelen beklenen döküm bağlıdır ve $ değişken olabilir hangi değerleri gibi.

$ Değişken ($ değişken) veya if (! $ Değişken) işe olsaydı o zaman bir doğru / yanlış bayrak gibi 0 ve 1 kullanarak, ama eğer strpos gibi bir tamsayı sonuç () bulunuyor eğer sorunlar koşacağız ... mümkünse, ben gerçek bir boolean değeri yerine 0/1 den kullanmanızı tavsiye ediyorum.

... Belki bu netleştirmeye yardımcı olacaktır; Çeşitli sonuçları görmek için $ var varyasyonlarını açıklama.

<?php

$var = true;
$var = 1;

$var = false;
$var = 0;

if ( $var ) {
    echo 'var = true <br />';
}

if ( $var === true ) {
    echo 'var is a boolean and = true';
}

if ( !$var ) {
    echo 'var = false <br />';
}

if ( $var === false ) {
    echo 'var is a boolean and = false';
}

Ben gerçekten derin PHP teknik malzeme içine değilim, ama ilk durumda

if($variable === true)

$ Değişken ifadesi doğru eğer için de geçerlidir aynı tip olması gerekir. Diğer bir deyişle, $ değişkeni sadece gerçek çözmek için değil, aynı zamanda bir Boolean olmak zorundadır. Böylece 2 işlemleri, değer-kontrol ve tipi denetimi var.

Ikinci durumda

if($variable)

$ Değişken sadece true çözmek zorundadır. Yani sadece değer denetimi oluşur. Ben bu bilgisayarı biraz daha az zaman alır sonucuna.

Pratik konuşma: hızındaki farklılıklar olasılıkla önemsizdir.