Scris pe

PHP – IF/ELSE mai scurt cu operatorul ternar

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

Adresa ta de email nu va fi publicată.

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Copyright © 2022 toate drepturile
nu sunt
rezervate. Faceti ce vreti, e o tara libera.
Cred ca nu mai are rost sa zic, dar tema e facuta de mine cu TailwindCSS. Gasesti codul sursa aici.
Inca folosesc WordpPess 🧡. Tema e insa custom Laravel 😎.
%d blogeri au apreciat: