¿Qué significa if($variable)?

Tamaño de letra:

<?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:

PHP. Tabla de comparación de tipos

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...

Última actualización: Jueves, 02 Agosto 2012
Comentarios  
0 # Esfrend 11-08-2012 23:05
yo tambien la he usado alguna vez y yo lo que hago es declarar la variable y darle un valor.así te quitas el error que sale y usar isset() que será true.

No tiene privilegios para responder a los comentarios.


 
Visitas: 8487595