Zdravím.
Když použiji ternární operátor, je lepší to hodit do závorky ?
Někde jsem viděl např.:
$prom = (isset($prom2) ? "OK" : "NE");
Ale viděl jsem i:
$prom = isset($prom2) ? "OK" : "NE";
Rozdíl je v tom, že v prvním příkladu je celé porovnání v závorce, v druhém nikoliv.
Děkuji za reakce,
Magnus.
V tomhle případě jsou závorky úplně zbytečné. Význam je stejný.
V některých situacích (pokud však používáš ternární operátor např. mezi řetězci, viz příklad) jsou závorky okolo nutné. Příklad:
echo 'ahoj '.($a ? 'můj' : 'náš').' světe';
Dobře, děkuji za ujasnění. Sice možná zbytečná otázka, ale však to znáte - jistota je jistota.
Závorky se používají tam, kde je potřeba aplikovat prioritu.
http://www.php.net/manual/en/language.operators.precedence.php
Třeba právě Freezův příklad s řetězci. Bez závorky dojde k chybnému vyhodnocení řetězce, protože prioritu má "." před "?". Dojde tedy nejdříve ke spojení řetězce 'ahoj '.$a, až pak se provede ternární operátor.
Takže echo 'ahoj ' . $a ? 'můj' : 'náš' . ' světe'; má stejný efekt jako echo ('ahoj '.$a)?'můj':('náš'.' světe'); Ve výsledku bude vždy 'můj'.
Ve tvém případě je obalená závorka zbytečná. Operátor "?" má přednost před "=".
Já mám občas takový nešvar, že používám i tvar $prom = (isset($prom2)) ? "OK" : "NE"; Tedy obalení pouze podmínky. Zde je to také zbytečné.
Pokud je v podmínce pouze nějaká funkce, tak závorky jsou skutečně zbytečné a znepřehledňující. Ovšem jsou i situace, kdy si programátor není jist prioritami nebo chce nějakým způsobem kód zpřehlednit a závorky se k tomu hodí.
Sem-tam nějaký pár závorek navíc neuškodí.
Tomík (tom.czweb.org)
Delam to taky, ze obaluji podminky zavorkou. Je to takovy zvyk, kdy chci zduraznit, ze tam podminka je a kde konci. Tento zapis ale vynechavam pri vlozene podmince, aby tam nebylo moc zavorek
a = b ? c : (d ? e : f)