Cuidado con el operador ternario, ‘?’ en PHP

Hay un detalle con el operador ‘?’ con el que hay que tener cuidado. Es posible que alguna vez te hayas encontrado con este problema:

$nombre = 'Gorka';
echo "Nombre: " . isset($nombre) ? $nombre : '' . " es mi nombre.\n";

Posiblemente esperarás que se muestre:

Gorka es mi nombre.

Pero en realidad se muestra:

Gorka

Esto se debe a que la última cadena pasa a formar parte de la expresión a ejecturar si la condición no se cumple (lo que va después de ‘:’). Para evitar este problema basta con añadir un paréntesis:

$nombre = 'Gorka';
echo "Mensaje: " . ( isset($nombre) ? $nombre : '' ) . " es mi nombre.\n";

y así ya sale bien:

Mensaje: Gorka es mi nombre.

Lo sé, es una tontería, pero ¡la de tiempo que se pierde a veces con estas bobadas hasta que te das cuenta!

Deja un comentario