Menu

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.

In caz ca nu stiti ce inseamna pseudocod cititi aici !

Instructiunea conditionala(se intelege de unde vine conditionala, de la conditie) if in pseudocod cu aroma de php este de forma:

Daca( conditie ) Atunci{
	executa asta
}
Iar tradus in php vine:
if( conditie ){
	cod de executat  daca  e adevarat  ( daca conditia returneaza valoarea booleana true)
}
Instructiunea if else in pseudocod cu aroma de php este de forma:
Daca( conditie ) Atunci{
	executa asta
} Daca nu{
	executa asta
}
Iar tradus in php vine:
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
Dupa cum ati observat operatorii AND si && sunt la fel respectiv Or si || tot la fel. Diferenta dintre ei fiind doar ordinea in care se executa. Cu toate acestea eu recomand construirea conditiilor in blocuri logice deoarece conditia $x > $y AND $a < $b && $c == $d este mult mai grea de citit ca conditia ($x > $y) AND ($a < $b AND $c == $d) cu toate ca au exact acelasi rezultat si o vom si demonstra putin mai incolo.
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:

<?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';
}
?>
Output:

Ne putem juca cu instructiunea if incat sa simulam else-ul, uite asa:

<?php
$conditie = 3 < 5;  
if($conditie){
	echo 'Da';
}
if(!$conditie){
	echo 'Nu';
}
?>
Output:

Putem folosii si functii care returneaza valori booleene pe post de conditite:

<?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>';
}
?>
Output:

Else mai are un frate, si anume elseif() care este jumate if jumate else. Pseudocod cu aroma de php:

<?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
}
?>
Mai multe o sa vezi in exemplu urmator:
<?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>';
}
?>
Output:

Acum o sa-ti arat si un exemplu in care este folosit operatorul conditional AND

<?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>.';
}
?>
Output:

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:

<?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> ';
}
?>
Output:

Acum iti voi arata si un exemplu in care folosim blocuri de conditii:

<?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>';
}
?>
Output:

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:

<?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;
?>
Este mult mai lung ca codul:
<?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;
?>
Desigur varianta a doua este cea de preferat, ambele au output-ul:

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:

<?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; ?>
Output:

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:

<?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.';
}
?>
Output:

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



Ti-a placut articolul? Asigura-te ca-ti dam de veste cand publicam altele noi.


Tags: Curs Php

Comments Nota 0 din 0