Evaluare utilizator: 5 / 5

Steluță activăSteluță activăSteluță activăSteluță activăSteluță activă
 

Variabilele și constantele sunt utilizate de foarte multe ori în diverse operații pentru a obține o valoare nouă. Pentru a efectua aceste operații asupra variabilelor vom utiliza niște simboluri, denumite operatori.

Cu alte cuvinte, operatorii sunt simboluri care determină un program să execute diverse operații asupra variabilelor sau constantelor. De exemplu, codul de mai jos utilizează un operator de adunare (+), pentru a aduna valorile variabilelor $a și $b, pentru a produce o nouă valoare.

echo $a + $b;

O expresie este o combinație de constante, variabile și operatori. Iată câteva exemple de expresii:

$a + $b;

$a - $b;

$a++;

--$b;

Variabilele, constantele, valorile care sunt utilizate cu un operator sunt cunoscute ca operanzi .

Tipuri de operatori

În PHP operatorii pot fi grupați în zece tipuri, după cum urmează:

Tipuri

Descriere

Aritmetici

Realizează operații matematici comune, cum ar fi: adunarea, scăderea, etc.

De atribuire

Atribuie o valoare unei variabile

La nivel de bit

Realizează operații pe biți într-un număr întreg.

Relaționali

Compară și testează valorile unor variabile

De control a erorilor

Manipularea erorilor

De execuție

Cauzează execuția unor comenzi, cum ar fi comenzile shell.

De incrementare/decrementare

Incrementează sau decrementează valoarea unei variabile.

Logici

Operatori logici (boolean) cum ar fi: and, or, not, care pot fi utilizate pentru a include sau exclude.

Șir (string)

Concatenarea șirurilor .

Tablou (array)

Realizarea de operații pe tablouri (arrays).

 

 

Operatori aritmetici

+ adunare

- scădere

* înmulțire

/ împărțire

% modulo (rezultatul este restul împărțire – de exemplu 5/3 = 2)

Nu există operator pentru ridicarea la putere. Odinea operațiilor este cea binecunoscută, iar pentru modificarea acestei ordini se pot folosi paranteze.

Exemplu:

$a=10;

$b=5;

 

echo $a+$b . "<br />"; //se va afisa 15

echo $a-$b . "<br />"; //se va afisa 5

echo $a*$b . "<br />"; //se va afisa 50

echo $a/$b . "<br />"; // se va afisa 2

 

$b=3;

echo $a%$b; // se va afisa 1

 

Operatori de atribuire

În orice limbaj de programare operatorul (=) se utilizează pentru a atribui o valoare unei variabile.

$c = $a + $b;

În această expresie, se vor aduna valorile variabilelor $a și $b și rezultatul se va atribui variabilei $c. De asemenea puteți să scrieți următorul cod:

$b = $a = 5;

Această expresie înseamnă că valoarea 5 va fi atribuită variabilei $a, după aceea valoarea variabilei $a, care este 5, va fi atribuită variabilei $b. Deci, ambele variabile, atât variabila $b, cât și $a, va fi 5.

Operatorul de atribuire (=) poate fi utilizat în diverse combinații, cum ar fi:

+= atribuire cu adunare

-= atribuire cu scădere

*= atribuire cu înmulțire

/= atribuire cu împărțire

%= atribuire cu modulo

 

Exemple:

$a=4;

 

$a +=4;

echo $a."<br />"; // se va afisa 8

$a -=2;

echo $a."<br />"; // se va afisa 6

$a *=4;

echo $a."<br />"; // se va afisa 24

$a /=2;

echo $a."<br />"; // se va afisa 12

$a %=5;

echo $a."<br />"; // se va afisa 2

 

Observați că PHP  atribuie prin valoare. Astfel, o variabilă căreia i sa atribuit inițial o valoare va copia valoarea nouă atribuită într-o locație de memorie, mai degrabă decât să o trimită la locația inițială a valorii. Cu alte cuvinte, schimbarea valorii inițiale a unei variabile cu o nouă valoare nu afectează valoarea inițială a variabilei.

 

Exemplu:

$a = 5;

$b=$a;

 

echo $b ."<br />"; //se va afișa 5

 

$a +=5;

echo $a ."<br />"; //Noua valoare afișată va fi 10

echo $b; //se va afișa 5

 

Dacă doriți ca schimbarea valorii variabilei $a să afecteze și schimbarea valorii variabilei $b va trebui să atribuiți prin referință, utilizând după semnul egal un ampersand (&). Prin utilizarea acestui ampersand (&) se va prelua valoarea variabilei de la adresa de memorie unde este aceasta este depusă.

Exemplu:

 

<?php

$a = 5;

$b=&$a;

 

echo $b ."<br />"; //se va afisa 5

 

$a +=5;

echo $a ."<br />"; //Noua valoare afisata va fi 10

echo $b; //se va afisa 10

?>

 

Operatori la nivel de bit

Operatori la nivel de bit în PHP vă permit să manipulați direct biți, așa cum puteți vedea în tabelul de mai jos. Fiecare exemplu include atât valorile zecimale, cât și echivalentele lor binare, astfel încât să vedeți cum biți sunt modificați.

Un bit cu valoarea 1 se spune că este setată (set), în timp ce un bit cu valoarea 0 este nesetată (unset).

Operator

Descriere

Exemple

&(And)

Numai biți setați (cu valoare 1) în ambele valori sunt setați (se pune valoarea 1) în rezultat

 

11 & 5 = 1

00001011 & 00000101 = 00000001

 

| (Or)

Biți setați în fiecare valoare vor fi setați în rezultat

 

11 | 5 = 15

00001011 | 00000101 = 00001111

 

^(Xor)

Biți setați în fiecare valoare (dar care să nu fie comune în ambele valori) sunt setați în rezultat

 

11 ^ 5 = 14

00001011 ^ 00000101 = 00001110

 

~(Not)

Biți setați în valoare nu sunt setați în rezultat și viceversa

 

~11 = -12

-00001011 = 11110100 *

 

<< (Shift left)

Mută toți biți din prima valoare, cu un anumit număr de locuri spre stânga (specificat de a doua valoare)

 

3 << 2 = 12

 

00000011 << 2 = 00001100

 

>> (Shift right)

Mută toți biți din prima valoare, cu un anumit număr de locuri spre dreapta (specificat de a doua valoare)

 

8 >> 2 = 2

 

00001000 << 2 = 00000010

 

*Valoarea 11110100 reprezintă -12 deoarece PHP folosește sistemul complement de doi pentru a reprezenta numerele negative (vezi http://en.wikipedia.org/wiki/Two%27s_complement )

O utilizare comună a operatorilor la nivel de biți în PHP este de a combina valorile pentru a face un bit mask. De exemplu, să considerăm constantele, care reprezintă nivele de erori PHP, E_NOTICE care are valoarea întreagă de 8 (00001000 în binar) și E_PARSE care are valoarea întreagă 4 (00000100 în binar). Pentru a combina aceste două constante am putea să utilizăm operatorul la nivel de bit Or:

E_NOTICE | E_PARSE

Prin combinarea celor două valori în binar, reprezentând constantele respective, utilizând un operator la nivel de biți vom obține o nouă valoare (12), care reprezintă atât E_NOTICE (8), cât și E_PARSE (4):

00001000 (8) | 00000100 (4) = 00001100 (12)

 

Operatori relaționali

Operatorii relaționali (de comparare), de regulă, compară doi operanzi în variate modalități. Dacă testarea comparației (condiției) se finalizează cu succes va fi evaluată cu true (adevărat), în caz contrar cu false (fals). Operatorii relaționali se utilizează, de regulă, în declarații decizionale sau iterative (bucle), cum  ar fi if și while.

Operatorii relaționali utilizați în PHP:

Operatori

Descriere

Exemple

==

Egal cu

$a == $b

!= sau <>

Diferit de

$a != $b

===

Identic cu

$a === $b

!==

Nu este identic cu

$a !== $b

<

Mai mic decât

$a < $b

>

Mai mare decât

$a > $b

<=

Mai mic sau egal cu

$a <= $b

>=

Mai mare sau egal cu

$a >= $b

Exemple:

$a = 15;

echo ($a<18) . "<br />";  // afisează 1 (true)

echo ($a<14) . "<br />"; // afișează " " (false)

echo ($a<"18") . "<br />"; // afișează 1 (true) deoarece php convertește șirul în număr întreg

 

echo ($a==15) . "<br />"; // afișează 1 (true)

echo ($a==14) . "<br />"; // afișează " " (false)

echo ($a===15) . "<br />"; // afișează 1 (true)

echo ($a===14) . "<br />"; // afișează " " (false)

echo ($a==="15") . "<br />"; // afișează " " (false), deoarece $a și „15” nu sunt de același tip

 

echo ($a>=15) . "<br />"; // afișează 1 (true)

echo ($a>=18) . "<br />"; // afișează " " (false)

echo ($a>="15") . "<br />"; // afișează 1 (true)

 

Foarte des operatorul == se utilizează pentru a verifica dacă două șiruri sunt egale.

 

Operatori de incrementare/decrementare

Operatorii de incrementare/decrementare se pot folosi în felul următor:

++$a; // Adaugă valoarea unu către variabila $a și după aceea returnează rezultatul.

$a++; // Returnează valoarea variabilei $a, iar după aceea se adaugă valoarea unu.

--$a; // Scade valoarea unu din variabila $a și după aceea returnează rezultatul.

$a--; // Returnează valoarea variabilei $a, iar după aceea se scade valoarea unu.

 

Este importantă locația operatorului de incrementare/decrementare deoarece rezultatele sunt diferite. Urmăriți exemplul de mai jos:

$a=7;

echo ++$a."<br />"; // Va afisa "8", iar acum variabila $a are valoarea 8

$a=7;

echo $a++."<br />"; // Va afisa "7"

echo $a."<br />"; // iar acum variabila $a are valoarea 8

 

Operatori logici

PHP utilizează 6 tipuri de operatori logici :

Operator

Exemple

Rezultat

&& (and)

$a  &&  $b

true daca atat $a, cat si $b sunt evaluate true; altfel, false.

And

$a and $b

true daca atat $a, cat si $b sunt evaluate true; altfel, false.

| | (or)

$a | | $b

true daca fie $a sau $b sunt evaluate catre true; altfel, false.

or

$a or $b

true daca fie $a sau $b sunt evaluate catre true; altfel, false.

xor

$a xor $b

true daca $a sau $b (dar nu ambele) sunt evaluate catre true; altfel, false.

! (not)

! $x

true daca $a este false; false if $a este true

Exemple:

$a=5;

$b=7;

 

echo (($a>1) && ($b<8)) ."<br />"; // Afiseaza 1 (true)

echo (($a==5) or ($b==6)) ."<br />"; // Afiseaza 1 (true)

echo (($a==5) xor ($b==7)) ."<br />"; // Afiseaza " " (false) deoarece ambele expresii sunt true (adevarate)

echo (($a==5) xor ($b==8)) ."<br />"; // Afiseaza 1 (true)

 

echo (!($a==7)) ."<br />"; // Afiseaza 1 (true) deoarece $a nu este egal cu 7

echo (!($a==5)) ."<br />"; // Afiseaza " " (false) deoarece $a este egal cu 5

 

Operatorii logici se utilizează, de regulă, în declarații decizionale sau iterative (bucle), cum  ar fi if și while.

 

Operatori de tip șir (string)

Există doar un singur operator de tip șir și acela este operatorul de concatenare (.), adică un punct (dot pe engleză). Acest operator are rolul de a alătura (concatena) două sau mai multe șiruri de caractere, pentru a face un șir mai lung.

Exemplu:

echo "lectii"."deinformatica".".net"."<br />"; //se va afișa lectiideinformatica.net

echo "Invata " . "Simplu" . " si" . " Repede"; // se va afișa Invata Simplu si Repede

Desigur, putem să concatenăm și alte tipuri de date, cum ar fi numerele întregi sau reale , deoarece PHP face conversia automat a acestora către un șir.

Exemplu:

$a=25;

$b=15;

$c=10;

 

echo "O clasa, de regula, este formata din $a de elevi<br />"; // se va afisa O clasa, de regula, este formata din 25 de elevi

echo "In total avem $c clase<br />"; //In total avem 10 clase

echo "6 clase au fiecare cate $a de elevi<br />"; //6 clase au fiecare cate 25 de elevi

echo "In total avem ". (($a*6)+($b*4)). "<br />"; //In total avem 210

echo "Media elevilor per clasa este de ". (($a*6)+($b*4))/10; //Media elevilor per clasa este

de 21

 

Sau urmăriți exemplul de mai jos:

$a="lectiide";

$b="informatica.net";

 

$c = $a.$b;

echo $c."<br />"; //se va afisa lectiideinformatica.net

$a .= $b;

echo $a; //se va afisa lectiideinformatica.net

 

 

Operatori de control (de manipulare) a erorilor

PHP oferă un operator puternic de control a erorilor, simbolul @. Acest simbol va preveni afișarea erorilor în browser. De exemplu, dacă faceți referire la un fișier inexistent cu include_once("exemplu.php") ar duce la eroarea de mai jos:

Warning: include_once(exemplu.php) [function.include-once]: failed to open stream: No such file or directory in C:\xampp\htdocs\lectiideinfo\eroare.php on line 10

Warning: include_once() [function.include]: Failed opening 'exemplu.php' for inclusion (include_path='.;C:\xampp\php\pear\') in C:\xampp\htdocs\lectiideinfo\eroare.php on line 10

De regulă, utilizatorii unui site nu sunt informaticieni și, probabil, ați dori ca browser-ul să nu afișeze așa ceva. Puteți evita ca browser-ul să afișeze această eroare  utilizând simbolul @, care va anula executarea codului, ca în exemplul de mai jos:

@include_once("exemplu.php");

echo "Fisierul solicitat nu exista";

Codul de mai sus va afișa în browser următorul text:

Fișierul solicitat nu exista