PHP IF-Anweisung für Boolesche Werte: $ var === wahr vs $ var
-
13-09-2019 - |
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?
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;