variable vacio type is_true float entero entera declarar array php coding-style paradigms

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.