ternární operátor
6 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
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)