Ternární operátor v PHP
Předpokládejme, že máme následující kód, který kontroluje,
zda je uživateli 18 let nebo ne:
<?php
$age = 17;
if ($age >= 18) {
$adult = true;
} else {
$adult = false;
}
var_dump($adult);
?>
Jak vidíte, konstrukce if-else
je potřebná pouze k tomu, aby zapsala určitou
hodnotu do proměnné $adult. Pro
takové úlohy, kdy v podmínce dochází
pouze k zápisu jedné proměnné, existuje
kratší řešení pomocí takzvaného
ternárního operátoru.
Jeho syntaxe je následující:
<?php
variable = condition ? value1 : value2;
?>
Operátor funguje takto: pokud je podmínka pravdivá,
vrátí se value1, v opačném
případě - value2. Přepišme
kód uvedený na začátku lekce pomocí
ternárního operátoru:
<?php
$age = 17;
$adult = $age >= 18 ? true: false;
var_dump($adult);
?>
Mimochodem, není nutné zapisovat výsledek do
proměnné, lze jej okamžitě vypsat pomocí var_dump:
<?php
$age = 17;
var_dump( $age >= 18 ? true: false );
?>
Ternární operátor by měl být používán pouze v nejjednodušších případech, protože jeho použití znesnadňuje pochopení kódu.
Nechť je dána proměnná $num, která
může být záporná nebo kladná.
Zapište do proměnné $res číslo
1, pokud je proměnná $num větší
nebo rovna nule, a číslo -1, pokud je proměnná
$num menší než nula.