Blog de programación, errores, soluciones

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

PHP ternary operator

The ternary operator is another conditional operator, but it is worth putting it separately. It performs a similar action to if else.

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

Note that all are expressions, both expr1, expr2, and expr3. With the ternary operator, if expression 1 is true, expression 2 will be evaluated; otherwise, expression 3 will be evaluated.

The best way to understand the operator is through examples. For example, in the following code, I check if the message arrives:

check if the message arrives
<?php
$message=("hello")?"yes":"no";
echo $message;
?>
yes

Nesting?

A question we may ask ourselves about this operator is whether nesting can be done inside it, in other words, if we can put a ternary operator inside another one. The answer is yes, it is an expression, and therefore, we can put it inside any place where an expression is expected.

Nesting example
<?php
$stock = 0;
$b=("no-stock")?($stock==0)?"no stock":"not-defined":"not-price";
echo $b;
?>
no stock
Note: Although nesting may seem very useful, it is recommended not to use it because the idea of what the code does in each of them is lost.

Elvis operator

You may also see this operator as follows, the name of the Elvis operator comes from the fact that the operator looks like Elvis Presley’s hair:

reson why elvis operator
Sintaxis
(expr1) ?: (expr3)

This expression is equivalent to writing (expr1) ? (expr1) : (expr3).

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

Be careful when using the operator, it is not designed for you to place blocks within it. For that, it is better to use if or switch statements. Keep in mind that the ternary operator is just an operator.

Here I leave links to PHP control structures, PHP if, PHP switch

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

Category: en-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