¡Hola! Me parece que andas usando un bloqueador de anuncios =( ¿Nos desbloqueas? ¿Por qué?
F13

Funcion 13

Comprendiendo el operador ternario

Recuerdo que una de las cosas que más temía al verla en código de otros, era el operador ternario. 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:

if ($dinero > 10){  
  $mensaje = "Me puedo ir al cine!"; 
} else { 
  $mensaje = "Me tengo que quedar en casa... sniff"; 
}

No obstante, el operador ternario nos sirve como atajo para ciertos casos en sentencias if.

Querido lector, te presento al operador ternario

Quizá, hayas deducido que el operador ternario está compuesto por 3 partes. Éstas, están 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:

$mensaje = ($dinero > 10) ? 'Me puedo ir al cine!' : 'Me tengo que quedar en casa... sniff';

Fácil, ¿no? Sin duda, 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í:

$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.

$dinero = $_POST['dinero'] ?: null; // No hay dinero

Además, puedes incluso separarlo en distintas líneas para mejorar la legiblidad:

$mensaje = ($dinero > 10) ? 'Me puedo ir al cine!' : 'Me tengo que quedar en casa... sniff';

¡Nada de abusar!

Antes de usar el operador ternario, deberías evaluar la complejidad de la situación primero. Evita anidar varias de estas sentencias ya que va en detrimento total de la legilibilidad del código. En casos complejos es mejor mantenernos con sentencias if.

Aunque al principio puede ser un poco intimidante o poco intuitivo, cuesta poco hacerse a los operadores ternarios y es muy sencillo para 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.

Programador Front-end en First + Third y Potato. Trabajando con JavaScript y HTML5 desde el corazón de Sevilla.

Comentarios ¡Únete a la conversación!