Operadores en PHP: ?? (Null Coalesce Operator)

En la versión 7 de PHP se introdujo un nuevo operador: ?? (sí, dos interrogaciones). A este operador le han llamado el Null Coalesce Operator.

A pesar de que ya lleva un tiempo con nosotros apenas he visto usarlo así que creo que hay que darle un poco de promoción.

¿Para qué sirve? Pues para evitar este habitual trozo de código:

echo isset($variable) ? $variable : 'No existe';

¿A que te suena haber escrito esto mismo mil veces?

Ya he comentado mil veces que quienes nos dedicamos a la programación somos, sobre todo, gente vaga. Así que para ahorrarnos un poco de trabajo se ha creado este operador:

echo $variable ?? 'No existe';

Si la variable existe y no es nula se muestra su valor. En caso contrario se mostraría el mensaje ‘No existe’.

En realidad lo que hace es comprobar si el valor es null. Podemos comprobarlo aquí pasándole una variable que exista pero con valor null:

$variable = null;

echo $variable ?? 'No existe' . PHP_EOL; // Se mostrará el mensaje "No existe" 

Ojo, no se aplica a variables ‘vacías’:

$variable = '';

echo $variable ?? 'Valor por defecto' . PHP_EOL; // Esto no mostrará nada

Ni a variables con valor 0:

$variable = 0;

echo $variable ?? 'Valor por defecto' . PHP_EOL;// Esto no mostrará nada

¿Qué utilidad tiene este operador?

Viene muy bien en los casos que tenemos un array con algún índice que podría no existir. El ejemplo a continuación nos lanzaría un notice:

$array = [];
echo $array['indice-inexistente'];

NOTA: Puede que pienses que un notice no es algo grave; si eres de esas personas te recomiendo que leas Seamos estrictos en PHP (declare_strict=1 y otras zarandajas).

Pues esto ya no nos va a dar problemas porque podemos hacer así:

echo $array['indice-inexistente'] ?? '';

1 comentario en «Operadores en PHP: ?? (Null Coalesce Operator)»

Deja un comentario