miércoles, 20 de diciembre de 2017

¿Como y cuando se usan isset() y empty() correctamente?


Según la documentación de isset():
Devuelve true si la variable existe y tiene un valor distinto de nullfalse de lo contrario.
Por ejemplo:
$var = ''; // Cadena vacía

if (isset($var)) { // <= true
    ... 
}
Siempre te va a volver true aunque la la variable este vacía y se debería de comprobar con la función empty():
$var = ''; // Cadena vacía

if (!empty($var)) { // <= false

    // No está vacía (true)

} else {

    // Está vacía (false)
}
¿Y cuando deberías usar isset()?
Siempre y cuando que quieras comprobar que la variable existe, un ejemplo bueno sería si quieres saber si se ha mandado un formulario:
<form method="post" action="">
    ...
    <input type="text" name="campo1" value="">
    <input type="submit" name="submit" value="Enviar formulario">
</form>

if (isset($_POST['submit']) {
  ...
}

Según la documentación de empty():
Devuelve false si la variable existe y tiene un valor no vacío, distinto de cero. De otro modo devuelve true.
Con empty() las siguientes expresiones son consideradas como vacías (empty) y devuelven false:
"" (una cadena vacía)
0 (0 como un integer)
0.0 (0 como un float)
"0" (0 como un string)
NULL
FALSE
array() (un array vacío)
$var; (una variable declarada, pero sin un valor)
Importante de saber, que no se genera una advertencia si la variable no existe.
Esto significa que empty() es esencialmente el equivalente conciso de:
!isset($var) || $var == false.
Entonces si quedaría redundante si comprobamos la misma variable con isset() y empty() al mismo tiempo.
Un ejemplo como se puede usar isset() y !empty() al mismo tiempo cuando se quiere recibir los datos de un formulario:
<form method="post" action="">    
    <input type="text" name="campo1" value="">
    ...
    ...
    <input type="submit" name="submit" value="Enviar formulario">
</form>

if (isset($_POST['submit']) {

    if (!empty($_POST['campo1'])) {
        ...
    }
}

2 comentarios:

  1. Creo que es la documentación que más consulto jaja. Gracias por recordarlo!!

    ResponderEliminar
    Respuestas
    1. Gracias Gaby! El fin de mi blog es un ayudada memoria pero con la intención que a otros también les sirva y me alegro que te sirva!

      Eliminar