• #Aplicaciones
  • #Bases de datos
  • #Dispositivos
  • #Hardware
  • #Inversión
  • #Marketing
  • #Programacion
  • #Sistemas
  • If abreviado en PHP: el operador ternario

    TutorialesPHPProgramacion

    En ocasiones queremos introducir sentencias condicionales en una sola línea, pero si usamos una sentencia if, puede que tengamos que usar varias líneas para que la legibilidad de nuestro código sea la adecuada. Sin embargo podemos usar el operador ternario en PHP, que se comporta exactamente igual que una sentencia if con else.

    Qué es el operador ternario

    El operador ternario es la forma corta de la sentencia if { ... } else { ... }, por lo que en lugar de escribir el código del siguiente ejemplo:

    if ($condicion) {
        $resultado = 'verdadero';
    } else {
        $resultado = 'falso';
    }

    Podríamos usar el operador ternario de este modo:

    $resultado = $condicion ? 'verdadero' : 'falso';

    Si la variable $condicion se evalúa como true, el operando de la izquierda 'verdadero' será asignado a la variable $resultado. Si por el contrario la variable $condicion se evalúa como false, se asignará el operando de la derecha 'falso'.

    El nombre del operador ternario significa «operador que funciona con tres operandos». Se denomina operando a cada parte de la expresión, siendo el operador ternario el único operador de PHP que necesita tres operandos, que son la condición, el resultado que se asignará si es cierta y el resultado que se asignará si es falsa. Si no tienes claro qué expresiones devolverán true o false en PHP, consulta esta tabla.

    Sintaxis del operador ternario

    El operador ternario existe en muchos lenguajes de programación y sirve para que, dada una condición, ejecutar una sentencia o devolver un valor si se cumple dicha condición. Si no se cumple la condición, se devolverá otro valor o se ejecutará otra sentencia.

    La sintaxis genérica y común a todos los lenguajes es la siguiente:

    sentencia_booleana ? valor_si_verdadero : valor_si_falso

    Operador ternario abreviado

    Desde PHP 5.3 es posible omitir el operador de la izquierda, pudiendo acortar ciertas expresiones de siguiente modo:

    $resultado = $valor ?: 'defecto';

    En este caso, el valor que tendrá la variable $resultado será el valor de la variable $valor a no ser que la variable $valor se evalúe como falsa, en cuyo caso pasará a tomar el valor 'defecto'.

    Si usásemos la forma normal del operador ternario, la expresión anterior sería equivalente a la siguiente:

    $resultado = $valor ? $valor : 'defecto';

    Operadores ternarios encadenados

    También podemos encadenar varios operador ternarios, aunque no funcionará igual que en otros lenguajes de programación como JavaScript, ya que en PHP, el operador ternario es asociativo por la izquierda. Vamos a poner el siguiente ejemplo:

    $resultado = $condicion ? 'verdadero' : $condicion2 ? 'verdadero2' : 'falso';

    Por lógica, pensarías que primero se evalúa la variable $condicion, devolviendo el valor 'verdadero' si se cumple. Sin embargo, lo que ocurre en realidad es que $condicion2 se evalúa primero. Por ello, aunque $condicion se evalúe como true y $condicion2 sea false, el resultado será 'verdadero2'.

    La buena noticia es que no tienes que entenderlo, ya que desde PHP 7.4 los paréntesis son obligatorios debido a la confusión que esto generaba, por lo que la expresión anterior devolverá un error. La forma correcta es la siguiente:

    $resultado = $condicion ? 'verdadero' : ($condicion2 ? 'verdadero2' : 'falso');

    En efecto, ahora si $condicion se evalúa como true, el resultado será siempre 'verdadero'.

    Ejemplos de uso en PHP

    Vamos a ver un simple ejemplo en el que usamos dos condiciones:

    $a = 2;
    $b = 1;
     if ($a > $b) {
      $resultado = true;
    } else {
      $resultado = false;
    }
    
    echo($resultado); // true

    Para obtener el mismo resultado usando el operador ternario tendríamos que escribir el código anterior de este modo:

    $a = 2;
    $b = 1;
    
    $resultado = $a > $b ? true : false;
    
    echo($resultado); //true

    También es muy habitual usar el operador ternario para mostrar texto en pantalla:

    $a = 2;
    $b = 1;
    
    echo ($a > $b ? 'a es mayor que b' : 'a es menor o igual que b'); 

    Alternativamente también podemos usar esta expresión:

    echo ($a > $b) ? 'A es mayor que B' : 'A es menor o igual que B';

    Espero que os haya sido útil a los que estéis comenzando con PHP y también a los que no en caso de no utilizar demasiado este operador.

    Y esto ha sido todo.


    Avatar de Edu Lazaro

    Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

    👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

    Si quieres conocer mis proyectos, sígueme en Twitter.

    5 comentarios en “If abreviado en PHP: el operador ternario

    1. Buen artículo para los que no lo conocieran, venia buscando un ejemplo en el que lo usaras con un «operador estricto» (no se si se llaman así). Me explico:

      – Este caso falla, siempre se da la condición negativa:
      ($variable === 0) ? «Es cero» : «No es cero»;
      – Este caso funciona:
      ($variable == 0) ? «Es cero» : «No es cero»;

      1. Falla porque tu variable tiene 0 como string ejem.
        $variable = «0»;
        cuando usas el operador de identidad (===), este evalúa que sean iguales, pero también que sean del mismo tipo. Por eso te devuelve error cuando lo usas.


        //esto te devuelve si
        $var = 0;
        echo ($var === 0) ? "si" : "no";

    2. Añadir que en PHP también se puede resumir omitiendo el valor del medio. De esta forma expresión1 ? : expresión3 retorna expresión1 si es verdadero, y expresión3 de otra forma.

    Responder a Alejandro Cancelar la respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *