Projektowanie stron WWW od podszewki

Kursy mojej produkcji

2.3 Operator trójkowy

Zaczynając omawianie operatora trójkowego ponownie zacznę od przykładu z instrukcją warunkową if i else.
Kod:
<?php
$a = true;

if($a)
{
 echo 'Prawda';
}
else
{
 echo 'Fałsz';
}
?>
Powyższy kod można przedstawić w o wiele krótszej formie przy pomocy operatora trójkowego.
Kod:
<?php
$a = true;

echo $a ? 'Prawda' : 'Fałsz';
?>
Zasada działania operatora trójkowego jest bardzo prosta. W pierwszej części (tej przed znakiem ?) umieszczamy warunek bądź warunki, w drugiej, środkowej części umieszczamy działanie, które zostanie wykonane w momencie spełnienia warunków, natomiast w trzeciej (tej po znaku :) umieszczamy działanie, które zostanie wykonane w momencie niespełnienia warunków.

Dla poprawy czytelności zaleca się umieszczanie wyrażenia w nawiasie zwykłym czyli tak jak poniżej:
Kod:
<?php
$a = true;

echo ($a ? 'Prawda' : 'Fałsz');
?>
W ten sposób będziemy wiedzieć gdzie zaczyna się i kończy struktura kontrolna. Największym plusem ów operatora jest fakt, że zajmuje najmniej miejsca ze wszystkich poznanych wcześniej instrukcji. Jeżeli tylko macie taką możliwość stosujcie operator trójkowy, szczególnie w sytuacjach kiedy występuję if i else oraz jedna operacja związana z warunkiem.
Kod:
<?php
$a = $b = 7; 
// $a = 6;

echo ($a > $b ? '$a > $b' : ($a < $b ? '$a < $b' : '$a == $b'));
?>
Powyżej przedstawiłem w jaki sposób można zagnieździć jeden operator trójkowy w drugim. Oczywiście nawiasy zwykle są pomocnicze co nie zmienia faktu, że tak jak mówiłem przed chwilą zwiększają czytelność. Ten sam kod można przedstawić w nieco lepszej formie przy pomocy if, elseif i else.
Kod:
<?php
$a = $b = 7; 
// $a = 8;

if($a > $b)
{
 echo '$a > $b';
}
else if($a < $b)
{
 echo '$a < $b';
}
else
{
 echo '$a == $b';
}
?>

Łączenie warunków

Zasada jest prosta jak w przypadku instrukcji if. Do dyspozycji mamy kilka rożnych typów operatorów i używamy ich zgodnie z zapotrzebowaniem.
Kod:
<?php
$a = true;
$b = false;

echo ($a || $b ? 'Jeden z warunków zwraca prawdę' : 'Oba warunki zwracają fałsz');
?>