Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

PHP – Operador Ternario

En PHP el operador ternario es otro operador condicional, pero valía la pena ponerlo por separado, este realiza una acción similar a if else

Sintaxis
(expr1) ? (expr2) : (expr3)

Vea que todas son expresiones, tanto expr1, expr2 y expr3. Con el operador ternario, si la expresión 1 es true se evaluará la expresión 2, en caso contrario se evaluará la expresión 3.

La mejor manera de entender el operador es vía ejemplos:

por ejemplo en el siguiente veo si llega el mensaje
<?php
$message=("hello")?"yes":"no";
echo $message;
?>
yes

Nesting

Una pregunta que nos podemos poner a pensar sobre este operador es si se puede hacer nesting dentro de él, en español si podemos poner un operador ternario dentro de otro, la respuesta es si es una expresión y, por tanto, podemos ponerlo dentro de cualquier lugar donde espera una expresión

Ejemplo de nesting
<?php
$stock = 0;
$b=("no-stock")?($stock==0)?"no stock":"not-defined":"not-price";
echo $b;
?>
no stock
Aunque el anidamiento o nesting parezca ser de mucha utilidad, se recomienda no utilizarlo debido a que se va perdiendo la idea de lo que hace el código en cada uno de estos

Elvis operator

También puede que vea el operador ternario de php de la siguiente manera, el nombre de elvis operator sale a que el operador se parece al pelo de Elvis Presley ?:

Sintaxis
(expr1) ?: (expr3)

Esta expresión es el equivalente a escribir (expr1) ? (expr1): (expr3)

Elvis operator example
<?php
$b=("no-stock")?:"not-price";
echo $b;
?>
no-stock

Ten cuidado al usar el operador, este no está diseñado para que lo utilices colocando bloques dentro de él, para ello nos convendrá utilizar if o switch, tenga en cuenta que el operador ternario es un operador

Aquí dejo links a estructuras de control en PHP, PHP if, switch en PHP

Referencia: https://www.php.net/manual/en/language.operators.comparison.php

Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category