Muchas veces cuando alguien mira nuestro código y encuentra el operador ternario puede no saber muy bien que hace exactamente. Probablemente ya conozcas la estructura de control if en casi cualquier lenguaje. Representa uno de los principales conceptos en la programación. Esta sentencia es fácil de comprender y fácil de utilizar.
Seguramente estés acostumbrado a cosas como:
<?php
if
(
$dinero
> 10){
$mensaje
=
"Puedo viajar en avión!"
;
}
else
{
$mensaje
=
"Me tengo que ir en tren"
;
}
?>
No obstante, el operador ternario nos sirve como atajo para ciertos casos en sentencias if.
Os presento al operador ternario, ese gran desconocido..
El operador ternario está compuesto por 3 partes separadas por un símbolo de interrogación y el símbolo de dos puntos. El símbolo de interrogación sucede a la expresión de evaluación y puedes pensarla como, “¿Es verdadero lo que se está evaluando?” Por otro lado, los dos puntos separan los dos posibles valores que va a devolver la expresión, el primero será elegido si la expresión es evaluada como verdadera (true), y la segunda si la expresión es evaluada como falsa (false).
Un ejemplo:
<?php
$mensaje
= (
$dinero
> 10) ?
'Puedo viajar en Avión'
:
'Tengo que viajar en tren'
;
?>
Mucha complicación no tiene, ¿no? Donde más utilizo esta expresión, es al obtener datos de un formulario para ver si tenemos ese valor o no y, en caso de que no lo tenga, establecerla a un valor por defecto o null. Tal que así:
<?php
$dinero
= isset(
$_POST
[
'dinero'
]) ?
$_POST
[
'dinero'
] : null;
// No hay dinero
?>
En este caso, comprobamos que el formulario nos esté devolviendo el parámetro y la asignamos a la variable $dinero (muy imaginativo). En caso de que no, el valor por defecto null es asignado.
Desde PHP 5.3 es posible abreviar una sentencia ternaria excluyendo la expresión central. Si la expresión evalúa como verdadera, se devuelve su valor. Si no es así, se devuelve el valor alternativo.
<?php
$dinero
=
$_POST
[
'dinero'
] ?: null;
// No hay dinero
?>
Si lo prefieres, puedes incluso separarlo en distintas líneas para mejorar la legiblidad:
<?php
$mensaje
= (
$dinero
> 10) ?
'Puedo viajar en avión'
:
'Tengo que viajar en tren'
;
?>
¡No coviene abusar!
Antes de tomar la decisión de usar el operador ternario, es conveniente evaluar la complejidad de la situación. Hay que evitar anidar varias de estas sentencias ya que va disminuye la legilibilidad del código. En casos complejos es mejor mantenernos con sentencias if.
Aunque a simple vista puede ser poco intuitivo, es sencillo hacerse a los operadores ternarios y por consiguiente explicar a cualquiera que esté manteniendo tu código en el futuro. Recuerda que aunque estos ejemplos están en PHP, la mayoría de los lenguajes cuentan con estructuras muy similares o incluso idénticas.
Algunos ejemplos mas…
<?php
if (date('G') < 12) {
$mensaje = 'Buenos días';
} else {
$mensaje = 'Buenas tardes';
}
echo $mensaje;
?>
Aplicando el operador ternario:
<?php
$mensaje = (date('G') < 12) ? 'Buenos días' : 'Buenas tardes';
echo $mensaje;
?>
Más simplificado:
<?php
echo (date('G') < 12) ? 'Buenos días' : 'Buenas tardes';
?>