Domanda

So che questa domanda non è veramente importante .. però mi sono chiesto:

Quale delle seguenti istruzioni IF è il migliore e più veloce da usare?

<?php

$variable = true;

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

if($variable)
{
    // Something
}


?>

Lo so === è quello di abbinare esattamente il valore booleano. Tuttavia c'è davvero alcun miglioramento?

È stato utile?

Soluzione

Utilizzando if ($var === true) o if ($var) non è una questione di stile, ma una questione di correttezza. Perché if ($var) è lo stesso di if ($var == true). E il confronto == non controlla il tipo. Così 1 == true è vero, ma 1 === true è falso.

Altri suggerimenti

Per quanto riguarda la velocità, sono d'accordo con Niels, è probabilmente trascurabile.

Per quanto riguarda quale if è migliore per testare con, la risposta probabilmente dipende dalla fusione atteso e valorizza $ variabile può avere.

Se $ variabile con 0 e 1 come un vero false flag / then if ($ variabile) o if (! $ Variabile) avrebbe funzionato, ma se si tratta di un risultato intero come in strpos () si esegue in problemi ... se possibile, mi consiglia di utilizzare un valore booleano reale, piuttosto che 0/1.

... forse questo aiuterà a chiarire; commentare le variazioni di $ var per vedere i vari risultati.

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

Basta un dato di fatto:

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

Il secondo è più veloce rispetto alla prima.

Non sono davvero in profondità nel materiale tecnico di PHP, ma nel primo caso

if($variable === true)

$ variabile deve avere lo stesso tipo come vera per l'istruzione if per essere vero. In altre parole, variabile $ ha non solo per risolvere al vero, ma anche deve essere un valore booleano. Ecco, questo è 2 operazioni, il valore controllo e il tipo di controllo.

Nel secondo caso

if($variable)

$ variabile deve solo risolvere true. Quindi solo un valore di controllo si verifica. Ne deduco che che prende il computer un po 'meno tempo.

In pratica: le differenze di velocità sono probabilmente trascurabili

.

=== è davvero utile per strstr / stristr quando il primo ago è in posizione 0 nel pagliaio. Se non si utilizza === o! == si potrebbe avere un bug sulle vostre mani.

$str = "four score and...";
$position = strstr($str,'four');
if($position===FALSE) return FALSE;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top