O parte esentiala in programare este evaluarea anumitor conditii folosind structura if/else sau switch/case. Aceste structuri sunt usor de inteles si de programat in majoritatea limbajelor de programare. Totusi, uneori ele pot deveni foarte lungi si se intind pe multe linii de cod.
Noi programatorii stim ca de multe ori cautam o solutie cat mai scurta astfel incat sa ajungem la un anumit rezultat. Stucturile de IF ELSE nu sunt mereu optime si nu te ajuta sa faci lucrul acesta. Tocmai de aceea vreau sa va fac cunostinta cu operatorul ternar.
Operatorul ternar inseamna ca in loc de o structura if, folosesti ceva de genul “(conditie) ? (true return valoare-pt-true) : (false return valoare-pt-false)”. Este practic tot un IF dar simplificat.
Cum arata logica operatorului ternar?
/* cazul cel mai folosit */ $var = 5; $var_e_mai_mare_decat_doi = ($var > 2 ? true : false); // returneaza true
Care sunt avantajele operatorului ternar?
Sunt cateva avantaje care te vor ajuta daca alegi sa folosesti acasta structura:
- Structurile de IF/ELSE mai simple se scriu mult mai repede
- Poti folosi logica IF/ELSE direct in output in loc sa iti mai imparti output-ul in doua parti
- Face codul mai scurt!!!
- Face mentinerea codului mai usoara si mai rapida
- In loc sa iti pierzi timpul scriind mai multe linii IF/ELSE poti folosi timpul castigat sa bei o cafea 🙂
Sfaturi pentru operatorul ternar
Cateva mici sfaturi pentru cand folosesti operatorul “?:”
- Nu te baga in mai multe nivele dacat crezi ca poti duce
- Daca lucrezi intr-o echipa, asigura-te ca ai tai colegi inteleg codul
- PHP.net recomanda sa nu folosesti mai multe nivele intr-un operator ternar pentru ca nu tot timpul este previzibil rezultatul [true ? (false ? ‘a’ : ‘b’) : (true ? ‘c’ : (true ? ‘d’ : ‘e’))]
- Daca nu esti obisnuit cu operatorul ternar incepe sa scrii codul folosind IF/ELSE iar mai apoi transcrie in operator ternar
- Foloseste atatatea paranteze incat sa tii codul organizat dar nu prea multe astfel incat sa faci un ghiveci din cod.
Mai multe exemple
/* alt exemplu */ $mesaj = 'Salut '.($user->este_logat() ? $user->get('prenume') : 'Musafir') /* prescurtare la prescurtare ;-) */ $mesaj = 'Salut '.($user->get('prenume') ?: 'Guest'); /* direct in echo */ echo 'Bazat pe rezultatul tau, esti un ',($scor > 10 ? 'geniu' : 'amator'); //ce dur is :)) /* un exemplu mai greu de pe PHP.net */ $score = 10; $age = 20; echo 'Taking into account your age and score, you are: ',($age > 10 ? ($score < 80 ? 'behind' : 'above average') : ($score < 50 ? 'behind' : 'above average')); // returns 'You are behind' /* nivelul "mult-mai-greu-de-citit-pentru-oricine" */ $days = ($month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year %400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31)); // returneaza zilele dintr-o luna
Pentru mai multe exemple si documentatia completa citeste sectiunea de pe PHP.net
Lasă un răspuns