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<?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<?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<?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<?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.

Задание 1

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.