Projektowanie stron WWW od podszewki
Losowy artykuł: Wyjątki od reguły

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');
?>