Instructiuni conditionale if() else

1. Utilizarea valorilor de tip adevarat / fals

Majoritatea programelor utile nu se comporta în exact acelasi mod la fiecare rulare a acestora, în schimb, programele iau decizii, executând uneori o operatie si alteori alta, în functie de circumstante.
Programele PHP iau decizii prin evaluarea unor expresii conditionale si executa instructiuni bazate pe rezultatele acestor evaluari. Expresiile conditionale sunt asimilate ca având una din doua valori: TRUE (adevarat) sau FALSE (fals). Uneori, expresiile conditionale se mai numesc si expresii booleene, în onoarea matematicianului care le-a studiat, George Boole. Constanta TRUE are valoarea l, iar FALSE are valoarea 0.
O modalitate utila de a forma o expresie conditionala consta în utilizarea operatorilor logici pentru compararea a doua valori numerice. Sa luam urmatorul exemplu:

$a < 1;
Aceasta expresie conditionala foloseste operatorul <, care are, în esenta, aceeasi semnificatie ca în algebra. Expresia are valoarea TRUE daca si numai daca valoarea variabilei $a este mai mica decât 1; în toate celelalte cazuri, are valoarea FALSE.
Puteti forma expresii conditionale complexe prin unirea a doua expresii conditionale cu ajutorul unui operator logic. De exemplu, expresia urmatoare este adevarata daca ambele expresii conditionale care o compun sunt adevarate:
$a < 1 AND $b < 1
Cu alte cuvinte, expresia este adevarata daca atât variabila $a, cât si variabila $b au valori mai mici decât 1.
PHP furnizeaza un set de asemenea operatori relationali, prezentati pe scurt în tabelul de mai jos.

Puteti folosi operatorii logici pentru compararea sirurilor; cu toate acestea, un sir care apare într-o expresie conditionala este convertit la o valoare numerica înainte de evaluarea expresiei. Deseori, se ajunge la rezultate neasteptate, în general, valorile sirurilor trebuie sa fie comparate folosind o functie de comparare a sirurilor; aceste functii vor fi explicate în lectiile urmatoare.


Operatori logici
Operator Descriere
$a < $b - TRUE daca valoarea lui $a este mai mica decât valoarea lui $b.
$a > $b - TRUE daca valoarea lui $a este mai mare decât valoarea lui $b.
$a >= $b - TRUE daca valoarea lui $a este mai mare sau egala cu valoarea lui $b
$a <= $b - TRUE daca valoarea lui $a este mai mica sau egala cu valoarea lui $b
$a = $b - TRUE daca valoarea lui $a este egala cu valoarea lui $b.
$a == $b - TRUE daca $a si $b sunt identice; cu alte cuvinte, daca $a si $b au acelasi tip si aceeasi valoare
$a != $b - TRUE daca valoarea lui $a este diferita de valoarea lui $b
$a !== $b - TRUE daca $a si $b nu sunt identice; cu alte cuvinte, daca $a si $b nu sunt de acelasi tip si aceeasi valoare
$x AND $y - TRUE daca atât $x, cât si $y sunt adevarate
$x && $y - TRUE daca atât $x, cât si $y sunt adevarate.
$x OR $y - TRUE daca minimum una din expresiile $x sau $y este adevarata.
$x || $y - TRUE daca minimum una din expresiile $x sau $y este adevarata.
$x XOR $y - TRUE daca numai una din expresiile $x sau $y este adevarata.
!$x - TRUE daca $x este FALSE
NOT $x - TRUE daca $x este FALSE

Retineti ca puteti prefixa o expresie conditionala cu operatorul !, care inverseaza valoarea "TRUE" sau "FALSE" a operandului sau.


Observati ca PHP foloseste doi operatori logici care executa aceeasi operatie (AND si &&) respectiv (OR si ||).
Cu toate acestea, operatorii difera din punctul de vedere al precedentei - caracteristica care determina ordinea în care sunt executate operatiile în timpul evaluarii expresiilor. Operatorii && si || au o precedenta relativ ridicata, în timp ce operatorii AND si OR au o precedenta relativ redusa. Este la fel ca in aritmetica unde, intr-o ecuatie ca aceasta: a + b * c se executa intai inmultirea si apoi adunarea, chiar daca ordinea lor este alta (daca nu sunt folosite paranteze). La fel si in PHP, se pot folosi paranteze rotunde pentru a controla ordinea executarii operatiilor.
Pentru comoditate, puteti forma expresii conditionale fara un operator logic. De exemplu, daca $a este o variabila numerica, puteti folosi expresia $a ca expresie conditionala. Expresia este considerata ca având valoarea FALSE daca valoarea variabilei $a este zero, respectiv valoarea TRUE daca valoarea variabilei respective este diferita de zero.
Daca folositi un sir ca expresie conditionala, expresia are valoarea FALSE daca sirul este vid sau daca are valoarea speciala "\0", care simbolizeaza un octet cu valoarea zero.
Similar, utilizarea unei valori nedefinite ca expresie conditionala determina obtinerea valorii FALSE. Daca folositi un tablou sau un obiect ca expresie conditionala, aceasta are valoarea FALSE daca tabloul sau obiectul sunt vide (fara vreo valoare); în caz contrar, expresia are valoarea TRUE.

2. Scrierea instructiunilor "if"

Expresiile conditionale sunt esentiale pentru scrierea instructiunilor conditionale, prin care se iau decizii.
Una dintre cele mai simple si folosite instructiuni conditionale este instructiunea : if.

If(conditie) {
  Instructiune(1);
  Instructiune(2);
  ..................
}
- Dupa cum se observa dupa if urmeaza o pereche de paranteze rotunde in interiorul carora se plaseaza conditia, adica o expresie logica a carei rezultat poate fi TRUE sau FALSE. Daca si numai daca rezultatul expresiei logice (conditia) este TRUE se vor executa instuctiunile : Instructiune(1), apoi Instructiune(2), etc...
Se observa ca acest set de instructiune se plaseaza intre acolade. Doar intr-un singur caz aceste acolade nu sunt necesare si anume: in cazul in care este scrisa doar o singura instructiune.
Daca rezultatul expresiei logice dintre paranteze rotunde este FALSE , setul de instructiuni dintre acolade nu se va executa, controlul programului va trece mai departe.
Iata inca un exemplu, practic:
<?php
$numar = 12;
if ($numar > 10) {
  echo "Acesta este un numar mai mare decat 10";
}
?>
- Atunci când este executat scriptul, instructiunea if evalueaza expresia conditionala $numar > 10, care este adevarata (TRUE) numai daca valoarea variabilei $numar este mai mare decât 10. Daca valoarea variabilei $numar este mai mare decat 10, se va executa instructiunea echo, in caz contrar programul va trece mai departe.

In general, limbajul PHP ignora spatiile albe. In mod conventional, o instructiune asociata unei instructiuni "if" este scrisa decalat în raport cu aceasta. Acest procedeu este recomandat deoarece prin utilizarea sa este facilitata citirea programului.


Utilizarea instructiunii "else"

Sa presupunem ca doriti sa executati o instructiune atunci când o conditie este TRUE si o alta instructiune când conditia este FALSE. Instructiunea else va permite sa procedati astfel, dupa cum urmeaza:

If(conditie) {
  Instructiune(1);
  Instructiune(2);
  ..................
}
else {
  Instructiune(3);
  Instructiune(4);
  ..................
}
In acest din urma caz daca expresia logica din paranteze: conditie este adevarata se vor executa instructiunile: Instructiune(1); Instructiune(2); , iar daca valoarea expresiei logice : conditie are valoarea FALSE se vor executa instructiunile: Instructiune(3); Instructiune(4);
Instructiunea asociata unei instructiuni if sau else poate fi ea însasi o instructiune if. O asemenea instructiune if se numeste "instructiune if imbricata".
Iata un exemplu de instructiune if imbricata:
<?php
$numar = 88;
if ($numar > 10) {
  if ($numar > 100) {
    echo "Acesta este un numar mai mare decat 100";
  }
  else {
    echo "Acesta este un numar mai mic decat 100, dar mai mare decat 10";
  }
}
else {
  echo "Acesta este un numar mic";
}
?>
Exemplul afiseaza mesajul "Acesta este un numar mai mare decat 100" daca valoarea variabilei $numar depaseste 100; în caz contrar, daca valoarea variabilei $numar este mai mare decât 10 si mai mica decat 100, se afiseaza mesajul "Acesta este un numar mai mic decat 100, dar mai mare decat 10". Daca valoarea variabilei $numar este mai mica sau egala cu 10, exemplul afiseaza mesajul "Acesta este un numar mic".
Instructiunile if imbricate pot deveni extrem de dificil de înteles daca numarul de instructiuni si nivelul de imbricare nu sunt relativ reduse. Deci trebuie sa le folositi cu economie.

O instructiune corelata atât cu instructiunea if, cât si cu instructiunea else, este instructiunea elseif. Când este folosita corect, poate fi mai simplu de înteles decât o instructiune if imbricata, logic echivalenta cu aceasta.
Iata un exemplu de instrutiune else if():
<?php
$numar = 88;
if ($numar > 100 ) {
  echo "Acesta este un numar mai mare decat 100";
}
elseif ($numar > 10) {
  echo "Acesta este un numar mai mic decat 100, dar mai mare decat 10";
}
elseif ($numar > 1) {
  echo "Acesta este un numar mic";
}
else {
  echo "Acesta este un numar foarte mic";
}
?>
Exemplul extinde functionalitatea exemplului anterior, afisând mesajul "Acesta este un numar foarte mic" pentru valori ale variabilei $numar mai mici sau egale cu 1.
Într-un caz general, cu o instructiune if si cu o instructiune else poate fi asociat un numar mult mai mare de instructiuni elseif. PHP evalueaza expresiile conditionale în mod succesiv, pornind de la expresia conditionala asociata instructiunii "if". PHP executa instructiunea asociata primei expresii conditionale care are valoarea TRUE; daca nici o expresie conditionala nu are valoarea TRUE, PHP executa instructiunea asociata cu instructiunea else. Este permisa omiterea instructiunii else, caz în care nu este executata nici o instructiune daca nici una din expresiile conditionale nu are valoarea TRUE.
Constante si tipuri de ... <<-- Anterior --- Urmator -->> Instructiuni conditionale switch

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tag se foloseste pentru a adauga liste in elemente <ul> si <ol>?
<dt> <dd> <li>
<ul>
 <li>http://coursesweb.net/html/</li>
 <li>http://www.marplo.net/html/</li>
</ul>
Care valoare a proprietatii "display" seteaza elementul ca tip bloc si afiseaza un punct in fata?
block list-item inline-block
.some_class {
  display: list-item;
}
Care instructiune JavaScript transforma un obiect in sir JSON.
JSON.parse() JSON.stringify eval()
var obj = {
 "courses": ["php", "javascript", "ajax"]
};
var jsonstr = JSON.stringify(obj);
alert(jsonstr);    // {"courses":["php","javascript","ajax"]}
Indicati clasa PHP folosita pentru a lucra cu elemente HTML si XML in PHP.
stdClass PDO DOMDocument
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>';
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById("dv1");
echo $elm->nodeValue;    // CoursesWeb.net
Indicati forma de Prezent Continuu a verbului "to live" (a trai /a locui)
lived living liveing
I`m living here.
- Traiesc /Locuiesc aici.
Care este forma de Gerunziu (sau Participiu Prezent) a verbului "vivir" (a trai /a locui)?
vivió vivido viviendo
Estoy viviendo aquí.
- Traiesc /Locuiesc aici.
Instructiuni conditionale if else - Tutoriale PHP