Frage

Ich weiß, diese Frage nicht wirklich wichtig ist .. aber ich habe mich gefragt:

Welche der folgenden IF-Anweisungen ist die beste und schnellste zu benutzen?

<?php

$variable = true;

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

if($variable)
{
    // Something
}


?>

Ich weiß === entsprechen genau den Booleschen Wert. Allerdings gibt es wirklich eine Verbesserung?

War es hilfreich?

Lösung

if ($var === true) oder if ($var) Verwendung ist nicht eine Frage des Stils, sondern eine Frage der Korrektheit. Da if ($var) ist die gleiche wie if ($var == true). Und == Vergleich überprüft nicht den Typ. So 1 == true ist wahr, aber 1 === true ist falsch.

Andere Tipps

Was Geschwindigkeit, ich mit Niels einverstanden sind, ist es wahrscheinlich zu vernachlässigen.

Soweit die if-Anweisung am besten mit testen, wahrscheinlich die Antwort auf die erwartete Gießen hängt und Werte können $ Variable haben.

Wenn $ Variable ist mit 0 und 1 als wahr / falsch-Flag dann if ($ Variable) oder if (! $ Variable) funktionieren würde, aber wenn es eine ganze Zahl Ergebnis wie in strpos () Sie Probleme werden ... wenn möglich, würde ich empfehlen, einen tatsächlichen boolean Wert mit eher als 0/1.

... vielleicht wird dies dazu beitragen klären; Kommentar die Variationen von $ var heraus die verschiedenen Ergebnisse zu sehen.

<?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';
}

Nur eine Tatsache:

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) {} }'

Das zweite ist schneller als die erste.

Ich bin nicht wirklich tief in die technische Sachen von PHP, aber im ersten Fall

if($variable === true)

$ Variable hat genau die gleiche Art wie wahr für die haben, wenn Aussage wahr zu sein. Mit anderen Worten, hat $ variable nicht nur auf true zu lösen, sondern auch ein boolean hat sein. Das ist also 2 Operationen, Werteprüfung und Typprüfung.

Im zweiten Fall

if($variable)

$ Variable hat nur auf true zu lösen. Also nur Wert Prüfung stattfindet. Ich daraus schließen, dass, dass der Computer ein wenig weniger Zeit in Anspruch nimmt.

Praktisch gesprochen: die Unterschiede in der Geschwindigkeit sind wahrscheinlich vernachlässigbar

.

=== ist wirklich hilfreich in strstr / stristr, wenn die erste Nadel in Position 0 im Heuhaufen ist. Wenn Sie nicht verwenden === oder! == Sie einen Fehler an den Händen haben.

$str = "four score and...";
$position = strstr($str,'four');
if($position===FALSE) return FALSE;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top