[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!';
}
?>
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!';
?>
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