Estructuras de control en PHP IV: el operador ternario

[Control de flujo o estructuras de control en PHP VI] Operador Ternario

Valencia, 28/09/2012, G.B.
Como os comenté en el anterior post, para finalizar con las instrucciones condicionales en PHP, vamos a conocer ahora el denominado  operador ternario. En realidad, no es una nueva clase de instrucción condicinal, sino una forma distinta de representar las instrucciones condicionales if/else, pero utilizando menos  líneas de código, por decirlo de algún modo.

Toma el nombre de ternario porque utiliza 3 argumentos; tiene tres partes definidas: (PARTE1) ? (PARTE2) : (PARTE3);

  • La primera parte es la condición o expresión que incluye la variable
  • La segunda el resultado de esa condición o expresión si el valor de la variable es verdadero (TRUE), cuando la condición se cumple.
  • La tercera parte es el valor o expresión si el resultado es falso (FALSE), cuando no se cumple la condición

Sintaxis del operador ternario:

$NombreVariable = (condición) ? sentencia1-cuando-se-cumple : sentencia2-cuando-no-se-cumple;
Si utilizamos alguna instrucción o expresión como por ejemplo echo, la sintaxis sería:
echo ($NombreVariable = (condición)) ? sentencia1-cuando-se-cumple : sentencia2-cuando-no-se-cumple;

Otra forma de representarlo sería como lo hace la Wikipedia (añadiendo el punto y coma final de la expresión):

expresión boleana ? valor si cierto : valor si falso;
ó
variable = condición ? valor si es cierto : valor si es falso;

 Como podemos observar se constituye de (PARTE1) ? (PARTE2) : (PARTE3); que significa (CONDICIÓN) ? (RESULTADO1) : (RESULTADO2); También podemos representarlo así:
INSTRUCCIÓN (CONDICIÓN) ? (RESULTADO-SI-SE-CUMPLE) : (RESULTADO-SI-NO-SE-CUMPLE);

Vamos a verlo con un ejemplo. Primero escribiremos la instrucción condicional utilizando la estructura if/else que ya conocemos. En segundo lugar, la reescribiremos utilizando la sintaxis del operador ternario. El ejemplo, muy sencillo, nos mostrará el mensaje “Son las 7 y cuarto de la mañana, hora de levantarse!!“, si son las 7:15 horas de la mañana (TRUE) y el mensaje “Estoy aprendiendo PHP, poco a poco.” , si lo ejecutamos a cualquier otra hora del día, es decir, si la condición es falsa ya que el valor de la variable  es distinto (FALSE):

Primero, la instrucción if/else que ya conocemos:

<?php
$hora = date ('H:i'); // formato de hora y minutos en PHP
if ($hora == ('7:15')){
echo 'Son las 7 y cuarto de la mañana, hora de levantarse!!';
}
else {
echo 'Estoy aprendiendo PHP, poco a poco!';
}
?>

<?php
$hora = date (‘H:i’); //formato de hora y minutos en PHP
if ($hora == (‘7:15’)){
echo ‘Son las 7 y cuarto de la mañana, hora de levantarse!!’;
}
else {
echo ‘Estoy aprendiendo PHP, poco a poco!’;
}
?> Ejecutar ejemplo

Y ahora lo mismo utilizando el operador ternario:

<?php
$hora = date ('H:i');
echo ($hora == ('7:15')) ? 'Son las 7 y cuarto de la mañana, hora de levantarse!!' : 'Estoy aprendiendo PHP, poco a poco!';
?>

<?php
$hora = date (‘H:i’);
echo ($hora == (‘7:15’)) ? ‘Son las 7 y cuarto de la mañana, hora de levantarse!!’ : ‘Estoy aprendiendo PHP, poco a poco!’;
?> Ejecutar ejemplo

El resultado será exactamente el mismo. Tened en cuenta que echo no necesita paréntesis, ya que no es una función, sino una sentencia del lenguaje.

Con esto finalizamos las instrucciones condicionales o de control de flujo en PHP. Lo siguiente que veremos serán las instrucciones de iteracción o bucles. De todas formas, las seguiremos utilizando en los próximos ejemplos.


Lecturas recomendadas:

El operador ternario en PHP (webtaller.com)
Operador terciario (Wikipedia)
Operadores de comparación en PHP

CategoríasPHP