Ternaarne operaator PHP-s
Oletagem, et meil on järgmine kood, mis kontrollib
kas kasutaja on juba <18 aastat vana või mitte:
<?php
$age = 17;
if ($age >= 18) {
$adult = true;
} else {
$adult = false;
}
var_dump($adult);
?>
Nagu näete, on <if-else konstruktsioon
vajalik ainult selleks, et kirjutada muutujasse
<$adult kindel väärtus. Selliste
ülesannete jaoks, kus tingimuses toimub
ainult ühe muutuja väärtustamine, on olemas
lühem lahendus nn
<ternaarse operaatori kaudu.
Selle süntaks on järgmine:
<?php
variable = condition ? value1 : value2;
?>
Operaator töötab nii: kui tingimus on tõene,
siis tagastatakse <value1, vastasel
juhul - <value2. Kirjutame üles
tunni alguses toodud koodi uuesti, kasutades
ternaarset operaatorit:
<?php
$age = 17;
$adult = $age >= 18 ? true: false;
var_dump($adult);
?>
Muide, võib tulemust mitte muutujasse kirjutada,
vaid kohe väljastada läbi <var_dump:
<?php
$age = 17;
var_dump( $age >= 18 ? true: false );
?>
Ternaarset operaatorit tuleks kasutada ainult kõige lihtsamatel juhtudel, kuna selle kasutamine raskendab koodi mõistmist.
Oletagem, et on antud muutuja <$num, mis
võib olla kas negatiivne või positiivne.
Kirjutage muutujasse <$res arv
<1, kui muutuja <$num on suurem
või võrdne nulliga, ja arv <-1, kui muutuja
<$num on väiksem kui null.