Operator trójargumentowy w PHP
Załóżmy, że mamy następujący kod, sprawdzający
czy użytkownik ma już 18 lat czy nie:
<?php
$age = 17;
if ($age >= 18) {
$adult = true;
} else {
$adult = false;
}
var_dump($adult);
?>
Jak widzisz, konstrukcja if-else
jest potrzebna tylko po to, aby zapisać określoną
wartość w zmiennej $adult. Dla
takich zadań, gdy w warunku odbywa się
tylko zapis jednej zmiennej, istnieje
bardziej krótkie rozwiązanie poprzez tak zwany
operator trójargumentowy.
Jego składnia jest taka:
<?php
variable = condition ? value1 : value2;
?>
Operator działa tak: jeśli warunek jest prawdziwy,
to zwracane jest value1, w przeciwnym
przypadku - value2. Przepiszmy
przedstawiony na samym początku lekcji kod za pomocą
operatora trójargumentowego:
<?php
$age = 17;
$adult = $age >= 18 ? true: false;
var_dump($adult);
?>
Można, przy okazji, nie zapisywać wyniku w
zmiennej, a od razu wypisać przez var_dump:
<?php
$age = 17;
var_dump( $age >= 18 ? true: false );
?>
Operatora trójargumentowego należy używać tylko w najprostszych przypadkach, ponieważ jego użycie utrudnia zrozumienie kodu.
Załóżmy, że dana jest zmienna $num, która
może być albo ujemna, albo dodatnia.
Zapisz w zmiennej $res liczbę
1, jeśli zmienna $num jest większa
lub równa zero, i liczbę -1, jeśli zmienna
$num jest mniejsza od zera.