Advertisement
  1. Code
  2. PHP

isset() vs. empty() vs. is_null() en PHP

by
Read Time:4 minsLanguages:

Spanish (Español) translation by Ana Paulina Figueroa Vazquez (you can also view the original English article)

En casi todos los programas que escribas en PHP harás uso de las variables. La mayoría de las veces estas variables tienen un valor, y normalmente las creamos con un valor inicial. Sin embargo, siempre existe la posibilidad de que algunas de las variables que estés utilizando no estén inicializadas. Esto puede resultar en una advertencia de PHP sobre el uso de una variable no definida.

Puedes tener variables no definidas debido a muchas razones. Las más comunes son que, de hecho, no hayas definido la variable, o bien que hayas cometido un error de ortografía al reutilizarla en otro lugar. Este es solo un error de programación. Sin embargo, otra posibilidad que puede resultar en una variable no definida es que esta última se haya definido condicionalmente.

También puedes encontrarte con que una variable tiene el valor NULL, o nulo. Esto también puede ocurrir por varias razones. Por ejemplo, es posible que la variable simplemente no haya sido inicializada con un valor. O el valor nulo podría ser devuelto por una función para indicar algún tipo de error.

En cualquier caso, usar una variable antes de que se haya definido, o cuando tiene un valor nulo, puede tener consecuencias no deseadas. En este tutorial te mostraré cómo verificar si un elemento ha sido definido y ver si está vacío o tiene un valor nulo.

Puedes usar isset()empty() o is_null() para comprobar si una o todas esas condiciones son verdaderas o falsas.

Definiciones

Comencemos con algunas definiciones.

  1. isset(): Puedes usar isset() para determinar si una variable está declarada y si tiene un valor diferente a null.
  2. empty(): Se usa para determinar si la variable existe y si su valor no se evalúa como false.
  3. is_null(): Esta función se usa para verificar si una variable tiene el valor null.

isset() vs. empty() en PHP

Como vimos en las definiciones, isset() devolverá true si hemos definido la variable con anterioridad y si hemos establecido su valor en algo diferente a NULL. Esto puede ser 0, una cadena vacía o false. Por otro lado, empty() devolverá true siempre que el valor de la variable se establezca en algo que se evalúe en false; a estos valores los llamamos "falsey". Ejemplos de valores "falsey" son 0, la cadena vacía "" y la cadena "0", una matriz vacía, NULL o, por supuesto, el valor booleano false.

Una similitud entre isset() y empty() es que ambas son construcciones de lenguaje y, por lo tanto, no pueden llamarse usando funciones variables.

El siguiente fragmento de código debería explicar la diferencia entre estas dos funciones.

Observa que empty() puede ser escrita usando la función isset():

Por supuesto, generalmente es más fácil usar la función empty() integrada.

isset() vs. is_null() en PHP

La función is_null() devuelve true si el valor de una variable se ha establecido explícitamente en NULL. De lo contrario, simplemente devuelve false. Por otro lado, isset() devolverá true siempre y cuando una variable esté definida y su valor no sea NULL.

Aquí hay un ejemplo básico para mostrar la diferencia entre estas funciones.

empty() vs. is_null() en PHP

La función empty() devuelve true si el valor de una variable se evalúa como false. Esto puede significar que contiene la cadena vacía, NULL, el entero 0 o una matriz sin elementos. Por otro lado, is_null() devolverá true solamente si la variable tiene el valor NULL.

Aquí puedes ver un ejemplo básico para mostrar la diferencia entre ellas.

Puntos importantes a recordar

Hay dos consejos que puedes usar para escribir código más conciso y evitar errores en el futuro.

1. A diferencia de empty()is_null(), puedes enviar múltiples valores a isset() a la vez para comprobar simultáneamente si cualquiera de ellos carece de definición o si su valor está establecido en NULL. En ese caso, isset() solamente devolverá true si ninguno de los valores enviados es NULL.

2. No uses == para comprobar si un valor es NULL. Esto dará un falso positivo para valores "falsey" como una cadena vacía que se evalúa como false.

Pensamientos finales

Este tutorial explicó rápidamente la diferencia entre isset()empty() e is_null(). Con suerte, ahora podrás determinar cuál de ellos es adecuado usar en tu código.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.