vacio - type php
DeclaraciĆ³n IF de PHP para valores booleanos: $ var=== true vs $ var (5)
Sé que esta pregunta no es realmente importante. Sin embargo, me he estado preguntando:
¿Cuál de las siguientes afirmaciones IF es la mejor y la más rápida de usar?
<?php
$variable = true;
if($variable === true)
{
//Something
}
if($variable)
{
// Something
}
?>
Sé que === es hacer coincidir exactamente el valor booleano. Sin embargo, ¿hay realmente alguna mejora?
=== es realmente útil en strstr / stristr cuando la primera aguja está en la posición 0 en el pajar. Si no usa === o! == podría tener un error en sus manos.
$str = "four score and...";
$position = strstr($str,''four'');
if($position===FALSE) return FALSE;
En cuanto a la velocidad, estoy de acuerdo con Niels, es probable que sea despreciable.
En lo que respecta a cuál es la mejor declaración para probar, la respuesta probablemente depende de la conversión esperada y los valores que puede tener la variable $.
Si $ variable usa 0 y 1 como indicador verdadero / falso, entonces si ($ variable) o si (! $ Variable) funcionaría, pero si es un resultado entero como en strpos (), tendrá problemas ... si es posible, recomendaría usar un valor booleano real en lugar de 0/1.
... tal vez esto ayude a aclarar; comente las variaciones de $ var para ver los diversos 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'';
}
No estoy muy metido en las cosas técnicas de PHP, pero en el primer caso
if($variable === true)
$ variable tiene que tener exactamente el mismo tipo de verdadero para que la sentencia if sea verdadera. En otras palabras, $ variable no solo tiene que resolverse como verdadero, sino que también tiene que ser un booleano. Así que eso es 2 operaciones, comprobación de valor y comprobación de tipo.
En el segundo caso
if($variable)
$ variable solo tiene que resolverse en verdadero. Así que solo se produce la comprobación de valores. Yo infiero que eso le toma a la computadora un poco menos de tiempo.
En la práctica, las diferencias de velocidad son probablemente despreciables.
Sólo un hecho:
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.
Usar if ($var === true)
o if ($var)
no es una cuestión de estilo sino una cuestión de corrección. Porque if ($var)
es lo mismo que if ($var == true)
. Y la comparación ==
no comprueba el tipo. Entonces 1 == true
es verdadero pero 1 === true
es falso.