¿Qué significa if($variable)?
<?php if($variable) ?>
Cuando uno programa en PHP o C y estudia las condiciones, por ejemplo, la estructura de control if, en pocos sitios se explica el significado de la condición if($variable). Sin embargo, muchos programadores la utilizan repetidamente. Hoy veremos su significado.
Para algunos autores el uso de if($variable), es una mala práctica. Voy a trabajar con PHP y haré un ejemplo muy sencillo. Se trata de investigar cuándo $resultado será SI o NO dependiendo del valor de $variable:
<?php if($variable) { $resultado = "SI"; } else { $resultado = "NO"; } ?>
Para poder visualizarlo bien en un navegador, le añadiré código HTML (XHTML 1.0 Transitional) y yo voy a trabajar con Eclipse y XDebug, como ya he explicado en esta web. No es necesario que lo instales o uses, simplemente es para reflejar los resultados:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xml:lang="es-es" xmlns="http://www.w3.org/1999/xhtml" lang="es-es"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>www.karmany.net</title> </head> <body> <?php if($variable) { $resultado = "SI"; } else { $resultado = "NO"; } ?> <h2>Ejemplo $variable</h2> <p>El resultado es: <?php echo $resultado; ?></p> </body> </html>
¿Qué significa if($variable)?
Buscando y rebuscando por la red, encontré en una de las webs de referencia de php, este excelente artículo: Tablas de comparación de tipos PHP
Voy a reescribir la primera tabla, que es la que nos interesa. En la columna gettype estan los tipos de variable:
Expresión |
gettype() |
empty() |
is_null() |
isset() |
Boolean: if($variable) |
---|---|---|---|---|---|
$variable = ""; | string | TRUE | FALSE | TRUE | FALSE |
$variable = null | NULL | TRUE | TRUE | FALSE | FALSE |
var $variable; | NULL | TRUE | TRUE | FALSE | FALSE |
$variable (no definida) | NULL | TRUE | TRUE | FALSE | FALSE |
$variable = array(); | array | TRUE | FALSE | TRUE | FALSE |
$variable = false; | boolean | TRUE | FALSE | TRUE | FALSE |
$variable = true; | boolean | FALSE | FALSE | TRUE | TRUE |
$variable = 1; | integer | FALSE | FALSE | TRUE | TRUE |
$variable = 42; | integer | FALSE | FALSE | TRUE | TRUE |
$variable = 0; | integer | TRUE | FALSE | TRUE | FALSE |
$variable = -1; | integer | FALSE | FALSE | TRUE | TRUE |
$variable = "1"; | string | FALSE | FALSE | TRUE | TRUE |
$variable = "0"; | string | TRUE | FALSE | TRUE | FALSE |
$variable = "-1"; | string | FALSE | FALSE | TRUE | TRUE |
$variable = "php"; | string | FALSE | FALSE | TRUE | TRUE |
$variable = "true"; | string | FALSE | FALSE | TRUE | TRUE |
$variable = "false"; | string | FALSE | FALSE | TRUE | TRUE |
Como puedes ver, ahí tienes los resultados de if($variable) según el valor de esta. En el ejemplo que he puesto realmente la variable no está definida, por lo tanto, mirando la tabla anterior y depurando el código, observo que if($variable) da como resultado FALSE.
En este último caso hay que tener una precaución y es que, al no estar definida, se va a generar un error de nivel E_NOTICE. Para evitarlo se podría inicializar la variable o usar las funciones de PHP: empty() o isset().
Usar o no usar
¿Se puede utilizar o es mejor usar funciones de PHP para obtener información de la variable? Aunque algunos lo consideran una mala práctica, lo cierto es que lo he visto en muchos códigos y yo también lo he usado. Desde mi punto de vista, evitando errores como el del párrafo anterior y observando los valores que puede tomar una variable, no veo una razón tan mala como para no usarlo.
Dejaremos los comentarios abiertos...