Instructiunile if else
Instructiunea if reprezinta decizia. Ea executa un cod in caz ca conditia este adevarata si alt cod(cu ajutorul else) in caz ca conditia nu este adevarata.
In lectia despre operatori am omis intentionat operatorii logici. De exemplu $a < $b s-ar traduce in a este mai mic ca b. In PHP, odata pusa ca conditie $a < $b ea este convertita intr-o valoare booleana care ai invatat-o in lectia tipuri de variabile in care am explicat tipurile de date in PHP.
Sunt sigur ca ti-ai dat seama ca daca $a este mai mic ca $b atunci returneaza valoarea booleana true iar in caz ca $a nu este mai mic ca $b returneaza valoarea booleana false.
Instructiunea conditionala(se intelege de unde vine conditionala, de la conditie) if in pseudocod cu aroma de php este de forma:
1 2 3 | Daca( conditie ) Atunci{ executa asta } |
1 2 3 | if ( conditie ){ cod de executat daca e adevarat ( daca conditia returneaza valoarea booleana true) } |
1 2 3 4 5 | Daca( conditie ) Atunci{ executa asta } Daca nu{ executa asta } |
1 2 3 4 5 | if ( conditie ){ cod de executat daca e adevarat ( daca conditia returneaza valoarea booleana true) } else { cod de executat daca nu e adevarat ( daca conditia returneaza valoarea booleana false) } |
Acum sa lamurim si care sunt operatorii logici:
$x < $y | Daca $x este mai mic ca $y returneaza true, in caz contrar returneaza false |
$x > $y | Daca $x este mai mare ca $y returneaza true, in caz contrar returneaza false |
$x == $y | Daca $x este egal cu $y returneaza true, in caz contrar returneaza false |
$x != $y | Daca $x nu este egal cu $y returneaza true, in caz contrar returneaza false |
$x AND $y | Daca $x si $y sunt adevarate returneaza true, in caz contrar returneaza false |
$x && $y | Daca $x si $y sunt adevarate returneaza true, in caz contrar returneaza false |
$x Or $y | Daca $x sau $y sunt adevarate returneaza true, in caz contrar returneaza false |
$x || $y | Daca $x sau $y sunt adevarate returneaza true, in caz contrar returneaza false |
$x XOR $y | Daca doar una din valori este adevarata returneaza true, in caz contrar returneaza false |
!$a | Operatorul ! este negatia, un fel de minus in matematica. Daca $a este falsa returneaza true iar daca $a este adevarata returneaza false |
Folosim == pentru a testa daca 2 variabile sunt egale deoarece operatorul = este pentru atribuire, in caz ca lucram cu valori boolene trebuie sa folosim === respectiv !==.
Acum ca am lamurit cu pseudocodul si sintaxa pentru if else. O sa incercam un exemplu care suna cam asa: "Daca 13 este mai mare ca 5 atunci afisez pe ecran da, daca nu afisez pe ecran nu". Codul PHP pentru acest exemplu arata cam asa:
1 2 3 4 5 6 7 | <?php if (13 > 5){ // Daca 13 este mai mare ca 5 atunci echo 'da' ; } else { // Daca 13 nu este mai mare ca 5 atunci echo 'nu' ; } ?> |

Ne putem juca cu instructiunea if incat sa simulam else-ul, uite asa:
1 2 3 4 5 6 7 8 9 | <?php $conditie = 3 < 5; if ( $conditie ){ echo 'Da' ; } if (! $conditie ){ echo 'Nu' ; } ?> |

Putem folosii si functii care returneaza valori booleene pe post de conditite:
1 2 3 4 5 6 7 8 | <?php $var = 'Eu iubesc Programam.Ro ' ; if ( is_int ( $var ) ){ echo 'Variabila este de tip <b>int</b>' ; } else { echo 'Variabila nu este de tip <b>int</b> ci de tip <b>' . gettype ( $var ). '</b>' ; } ?> |

Else mai are un frate, si anume elseif() care este jumate if jumate else. Pseudocod cu aroma de php:
1 2 3 4 5 6 7 | <?php Daca( conditie ) Atunci{ cod de executat daca conditie este true } Altfel Daca( alta_conditie ){ cod de executat daca conditie e false si alta_condtie este true } ?> |
1 2 3 4 5 6 7 8 | <?php $var = 'Tu iubesti Programam.Ro? ' ; if ( is_bool ( $var ) ){ echo 'Variabila este booloeana.' ; } elseif ( is_string ( $var ) ){ echo 'Variabila este de tip <b>string</b>' ; } ?> |

Acum o sa-ti arat si un exemplu in care este folosit operatorul conditional AND
1 2 3 4 5 6 7 | <?php if (1 == 3 AND isset( $var ) === true){ // daca 1 este egal cu 3 si isset($var) returneaza true echo 'Conditia a returnat <b>true</b>.' ; } else { echo 'Conditia a returnat <b>false</b>.' ; } ?> |

De tinut minut este ca cand comparam cu o valoare booleana (true in cazul nostru) se folosesc 3 egaluri( === ). Iar pentru compararea normala se folosesc 2 egaluri(==) deoarece un egal(=) inseamna atribuirea unei valori iar in cazul variabilelor ar fi creat buguri!
Dupa cum stii daca punem in fata unei conditii semnul exclamarii(!) el va inversa acea valoare booleana (din conditii tot valori booleene rezulta). Exemplu:
1 2 3 4 5 6 7 8 9 10 11 12 | <?php if ( 1 > 3 ){ echo 'conditia <b>1 > 3</b> a rezultat <b>true>/b> <br/>' ; } else { echo 'conditia <b>1 > 3</b> a rezultat <b>false</b> <br/>' ; } if ( !(1 > 3) ){ echo 'conditia <b>!1 > 3</b> a rezultat <b>true</b> ' ; } else { echo 'conditia <b>!1 > 3</b> a rezultat <b>false</b> ' ; } ?> |

Acum iti voi arata si un exemplu in care folosim blocuri de conditii:
1 2 3 4 5 6 7 | <?php if ( (1 == 2) || (3 < 5) ){ echo '<b>(1 == 2) || (3 < 5)</b> a rezultat <b>true</b>' ; } else { echo '<b>(1 == 2) || (3 < 5)</b> a rezultat <b>false</b>' ; } ?> |

Instructiunea if else mai are si o alternativa mai simpla, una mai scurta. Ea este de forma conditie ? daca e true : daca e false;. Aceasta forma a if-ului este cel mai mult folosita pentru siruri si pentru declarari.
Uitati mai jos o comparatie. Codul:
1 2 3 4 5 6 7 | <?php $var = 'Aceasta lectie este foarte frumoasa.' ; if ( ! is_int ( $var ) ){ $var = 'Variabila $var trebuie sa fie <b>int</b> si nu <b>' . gettype ( $var ). '</b>' ; } echo $var ; ?> |
1 2 3 4 5 6 | <?php $var = 'Aceasta lectie este foarte frumoasa.' ; // In caz ca $var nu este int ii schimbam valoarea iar in caz ca nu ii lasam valoarea initiala $var = ( ! is_int ( $var ) ? 'Variabila $var trebuie sa fie <b>int</b> si nu <b>' . gettype ( $var ). '</b>' : $var ); echo $var ; ?> |

Dar if else mai are inca o varianta, cam multe variante asa-i? Ea este folosita mai des cand suntem nevoiti sa lucram cu coduri php si html in acelasi fisier si sunt foarte amestecate.
Urmariti urmatorul exemplu:
1 2 3 4 5 6 | <?php if (true): ?> <p>Acesta este un bloc de cod HTML</p> <p>El va fi executat doar daca conditia este adevarata</p> <?php else : ?> <p>Acest bloc html va fi executat doar daca conditia nu este adevarata.</p> <?php endif ; ?> |

Dupa cum vedeti php functioneaza foarte frumos alaturi de HTML, chiar si cand suntem nevoiti sa le amestecam unu peste altu.
Iar acum sa demonstram si cea cu blocurile de test, in care eu am spus ca este mult mai bine sa folosim un sigur tip dintre && si || sau AND si Or:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php // functia rand(min,max) imi genereaza un numar random de la min la max $x = rand(1,100); $y = rand(1,100); $a = rand(1,100); $b = rand(1,100); $c = rand(1,100); $d = rand(1,100); if ( ( $x > $y AND $a < $b && $c == $d ) == (( $x > $y ) AND ( $a < $b AND $c == $d )) ){ echo 'Test #1: Conditiile sunt egale.<br/>' ; } else { echo 'Test #1: Conditiile nu sunt egale.<br/>' ; } $x = rand(1,100); $y = rand(1,100); $a = rand(1,100); $b = rand(1,100); $c = rand(1,100); $d = rand(1,100); if ( ( $x > $y AND $a < $b && $c == $d ) == (( $x > $y ) AND ( $a < $b AND $c == $d )) ){ echo 'Test #2: Conditiile sunt egale.' ; } else { echo 'Test #2: Conditiile nu sunt egale.' ; } ?> |

Sper ca aceasta lectie ti-a fost de ajutor , nu uitati ca if si else sunt foarte vitale intr-o aplicatie deoarece ii ofera aplicatiei capactitatea de a lua decizii si doar asa aplicatia voastra php va fi buna.
Nu uitati pentru nelamuriri postati pe forumul nostru si in caz ca doriti sa-mi comunicati mie ceva personal imi puteti trimite e-mail la adresele de contact prezentate aici
Tags: Curs Php