Pregunta

Sé que esta pregunta no es realmente importante .. Sin embargo, me he estado preguntando:

¿Cuál de las siguientes sentencias if es la mejor y más rápida de usar?

<?php

$variable = true;

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

if($variable)
{
    // Something
}


?>

Sé que es === a coincidir exactamente con el valor booleano. Sin embargo, ¿hay realmente ninguna mejora?

¿Fue útil?

Solución

El uso de if ($var === true) o if ($var) no es una cuestión de estilo sino una cuestión de corrección. Debido if ($var) es el mismo que if ($var == true). Y la comparación == no comprueba el tipo. Así 1 == true es cierto, pero 1 === true es falso.

Otros consejos

En cuanto a la velocidad, estoy de acuerdo con Niels, es probable que sea insignificante.

En cuanto a lo que si la declaración es mejor probar con, la respuesta probablemente depende de la fundición esperado y valora $ variable puede tener.

Si $ variable es poner 0 y 1 como una verdadera falsa bandera / luego, si ($ variable) o if (! $ Variable) iba a funcionar, pero si es un resultado entero como en strpos () se encontrará con problemas ... si es posible, me gustaría recomendar el uso de un valor booleano real en lugar de 0/1.

... tal vez esto ayudará a aclarar; comentar las variaciones de $ var para ver los diferentes resultados.

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

Sólo un dato:

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

El segundo es más rápido que el primero.

No estoy muy profundamente en el material técnico de PHP, pero en el primer caso

if($variable === true)

$ variables tiene que tener el mismo tipo exacto como ocurre con la sentencia if para ser verdad. En otras palabras, la variable $ no sólo tiene que resolver de verdad, sino que también tiene que ser un valor lógico. Así que eso es 2 operaciones, el valor de comprobación y verificación de tipos.

En el segundo caso

if($variable)

$ variable sólo tiene que resolver en true. Así comprobación único valor se produce. Deduzco que eso lleva al equipo un poco menos tiempo.

En términos prácticos: las diferencias de velocidad son probablemente insignificante

.

=== es realmente útil en strstr / stristr cuando la primera aguja está en la posición 0 en el pajar. Si no se utiliza o ===! == usted podría tener un error en sus manos.

$str = "four score and...";
$position = strstr($str,'four');
if($position===FALSE) return FALSE;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top