Qué diferencia hay entre cero null false y string vacío en php

Diferencias entre NULL, 0, false y “” bien explicado [php]

Si programas en php casi seguro que más de 1 y posiblemente 1000 veces has acabado en la documentación mirando lo mismo. Esta vez te voy a explicar la diferencia entre 0, false, null y “” (string vacío) en php.

Precisamente la culpa de este artículo la tiene un compañero de trabajo, así que podemos darle las gracias. A pesar de programar durante años, y tener conocimientos avanzados muchas veces acabo mirando en la documentación de php cosas tan simples como analizar variables vacías.

Qué diferencia hay entre false, null, “string vacío” y 0 en php

Intentaré explicarlo todo de la forma más sencilla posible, y con los ejemplos más claros. De todas formas si queda alguna duda en alguna de las secciones, o crees que algo debería ser revisado puedes dejar un comentario y lo miramos.

Cuando programas en php, un campo vacío o sin valor se puede presentar de diferentes formas:

  • NULL
  • FALSE
  • “”

Aquí es cuando llegan las dudas, pues a simple vista parecen 4 valores completamente diferentes o que se puedan interpretar de diversas formas. Pero esto no es del todo cierto.

Null, false, o y “” son básicamente lo mismo

Esta es la primera sorpresa que te puedes llevar al tratar de comparar estas cadenas. A veces hay que hacer comparar con if, isset, o de otras formas variadas un valor con otro, y los resultados son bastante obvios.

Supongamos por ejemplo que tenemos un archivo php con la siguiente estructura (puedes copiarlo y probarlo si quieres, pero te pondré también el resultado):

¿Cuales crees que serán los resultados así a ojo?, para tu sorpresa te va a devolver lo siguiente:

Lo que significa que en todos los supuestos la comparación obtenida será positiva. Pero ojo, pues lo que significan los dos símbolos de igual (==) es que los valores sean iguales o valgan lo mismo (en este caso nada), mientras que si usas 3 (===) deben ser idénticos y no coincidiría en ninguno de los casos.

A tener en cuenta que cuando comparamos 0 como un string (“0”), también se considera un valor nulo y lo mismo pasará con un array() vacío.

Con estas pruebas a la espalda, puedes encontrar cierta utilidad bastante interesante si estás acostumbrado a estar comparando valores contínuamente dentro de expresiones if.

Si le das un valor a una variable, ya bien sea a mano, o provenga de la base de datos, la puedes comprobar sin tener que revisar la igualdad para cualquiera de estos tipos de valores. Algo así:

Léete también  Google puede no ser tan listo, dile si usas https!

Te devolverá no vale nada, y lo mismo pasará si la variable tiene valor null, false o “”. Es decir, que si en tu tabla de la base de datos tienes una columna que puede tener valor 0 o un número mayor, un null, o está vacía, puedes comprobarla sin compararla.

Cuando usar isset, is_null o empty

Ahora entonces llega la duda, para qué sirven entonces las funciones de php:

  • isset()
  • is_null()
  • empty()

Cada una de ellas te ayudará a realizar comprobaciones más concretas sobre la variable en cuestión:

isset()

No se fija en el valor, sino en si está definida una variable. Esto significa que basta con que la variable exista antes de la comprobación para que devuelva true. (por ejemplo $var=0, $var=”” o $var=null).

Como resultado en este caso indicará está definido, ya que como comentaba la variable existe aunque su valor sea null.

is_null()

En este caso y como su nombre indica comprueba si una variable está definida como null. Esta puede venir de la base de datos también y devolverá true.

La primera coincidirá y devolverá true history! mientras que la segunda va a devolver false y no se mostrará el contenido del if.

Léete también  Magento 1.4.0.1 al pagar por paypal no carga el envío [Solucionado]

empty()

Por último empty analiza si una variable además de existir tiene algún valor. Esto significa que mientras el contenido de la variable sea equivalente a null (como hemos visto antes), no devolverá true.

Es decir, empty($valor) devuelve true si:

  • $valor = “”
  • $valor = null
  • $valor = false
  • $valor = 0 (0.0 o “0”)

Cualquier comentario es bien recibido así que si te quedan dudas o me he dejado algo…

¿Cómo usabas las comparaciones entre estas variables? Comenta y comparte


AYUDANOS a poder seguir dando respuestas. Te podemos echar una mano y tú también a nosotros, símplemente dale a me gusta.