Programacion con PHP 5 – 2.4.2.1 isset

Función isset

La funcion isset($variable) evalúa el valor de la variable y devuelve un valor booleano.

Devuelve TRUE en estos casos :
– la variable existe.
– la variable existe y ha sido inicializada con un valor diferente de NULL.
– la variable es un array (aunque no se haya inicializado).

y devuelve FALSE en estos casos :
– la variable no existe.
– la variable existe y NO sido inicializada.
– la variable existe y tiene el valor de NULL.

isset es una de tres funciones que puede recibir una cantidad arbitraria de parametros.

isset($var1, $var2, $var3, …);

Solo retorna TRUE si todas las variables han sido definidas, de otra forma retorna FALSE.

Esta función tambien puede recibir como parámetros un array, pero hay que tener cuidado con su uso.

$nroDecimal=0;
$exponentes=array(0);  //linea 1
//$exponentes=array(); //linea 2
if (isset($exponentes)){
//codigo a ejecutar
}

Imagina que el array $exponentes va a almacenar los exponentes de una sumatoria de números en base 2, en otros términos una conversion de binario a decimal. (# decimal = 2exp(0)+2exp(1)+2exp(2)+2exp(3) +…+2exp(n)).
En este código estamos diferenciando cuando este array tiene un elemento de cuando no tiene ninguno, para evitarnos la fatiga de volver a calcular el valor cero en la variable $nroDecimal.
En este caso $exponentes al validarse con isset daria TRUE (tanto al usar la linea 1 como la linea 2, porque ambos inicializan la variable $exponentes) , lo que sería ambiguo para nuestro objetivo que es diferenciar ambos casos.
Para este caso hay que recordar que isset evalúa específicamente variables individuales (un arreglo es una colección de variables sin nombre, sólo identificables por su índice) .

El código a continuación será más exacto para evaluar este caso, porque trabaja directamente con la “variable” del array $exponentes con índice cero :

$nroDecimal=0;
$exponentes=array(0);  //linea 1
//$exponentes=array(); //linea 2
if (isset($exponentes[0])){
//codigo a ejecutar
}

Si se trabaja con la linea2 en vez de la linea1 isset devolvera FALSE (y no TRUE como en el caso anterior) y el código no pasara dentro del if.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s