E-TERN-izare şi COALE-scenţe

Despre operatorul ternar am mai discutat şi în alt articol. Despre operatorul de coalescență nulă (??), însă, încă nu am făcut-o. Şi, pentru că, oarecum, seamănă (şi nu prea) le vom compara și analiza în acest articol.

Operatorul ternar (?:)

Operatorul ternar este o formă scurtă pentru if ... else, fiind folosită când dorim alegerea între două valori în funcție de o condiție.

Forma standard este: (condiție) ? declaratie1 : declaratie2;. Aşadar, dacă condiţia este adevărată va fi afişată declaratie1, iar dacă este fals, va fi afişată declaratie2.

Exemplu: 

echo $afis == 1 ? $user_id : NULL;

  • Verifică dacă $afis == 1.
  • Dacă DA → returnează $user_id.
  • Dacă NU → returnează NULL.

Operatorul de coalescență nulă (??)

Operatorul de coalescenţă este forma scurtă a unei astfel de situaţie:

Forma standard este: $variabila = $valoare1 ?? $valoare_implicita. Aşadar, dacă $valoare1 este setată (există) și nu este null returnează $valoare1, iar dacă nu returnează $valoare_implicita.

Exemplu:

echo $_SESSION['solicitare'] ?? [];

  • Verifică dacă $_SESSION['solicitare'] există şi nu e null.
  • Dacă DA → returnează $data = $_SESSION['solicitare'].
  • Dacă NU → returnează $data = [].

Exemplu grafic

Scheme cu exemplificări

Transpunerea celor două scheme poate fi redată aşa:

Simplificare ChatGPT-istă

Folosind ajutorul ChatGPT, sintetizând, ar rezulta aceste diferenţe redate în tabelul următor.

Caracteristică Ternar (?:) Coalescență nulă (??)
Scop Alege între două valori în funcție de o condiție Alege valoarea non-null/existentă
Verifică Orice condiție logică (expresie booleană) Doar dacă e isset() și nu e null (adică != null)
Exemplu $x > 5 ? 'mare' : 'mic'; $x ?? 'valoare implicită';
Echivalent lung if (...) { ... } else { ... } if (isset(...)) { ... } else { ... }
Număr valori verificate Două (adevărat/fals) Poate fi și un şir ($a ?? $b ?? $c)
Rezultate posibile Două valori la alegere Prima valoare non-null din şir
Utilizare tipică Alegere în funcţie de o condiţie Dăm valoare implicită dacă e null.

Aşadar, simplificând:

    • dacă avem o condiție logică și două posibile rezultate → folosim operatorul ternar.
    • dacă vrem să verificăm dacă o variabilă există și nu e nulă, și altfel să dăm o valoare implicită vom folosi ??.

Truc mnemotehnic: 

  • Ternar = „T” de la Test logic → testează o condiție.
  • ?? = „Două semne de întrebare” → întreabă dacă variabila există și nu e null.</li>

Exemplificare pentru diferenţiere

Afişare:

Aşadar:

  • Ternarul decide în funcție de o condiție logică (adevărat/fals).
  • ?? dă o valoare implicită dacă prima nu există sau e null.
  • Putem folosi ?? și în şir: $a ?? $b ?? $c.

Author: Ovidiu.S

Suficient de pasionat de această zonă profesională ca, în cazul în care ştiu ceva - cât de puţin - să împărtăşesc cu alţii.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *