Învăţăm PHP: Operatori


Continuăm lecţiile de PHP cu ceva foarte uşor: operatorii. Unii ar putea să spună că se poate sări, gândindu-se că ei se reduc la + (plus), – (minus), * (înmulţire) şi / (împărţire). Aceştia ar fi operatorii artimetici. Şi nu sunt toţi. În PHP mai există şi % (modul), operatorul care returnează restul unei împărţiri. Astfel, 7%3 este… 1 (puţină matematică: 3*2+1=7). Corect. Există însă şi alţi operatori. Unul l-am folosit deja la variabile, fiind vorba de = (egal). Acest operator atribuie părţii stângi (care trebuie să fie numele unei variabile) valoarea evaluată a părţii drepte (poate fi un număr, o altă variabilă, o expresie complicată). Atenţie: rezultatul unei atribuiri este valoarea din partea dreaptă! Aceasta înseamnă că dacă scriem ceva de genul $a = ($b=11)+33; atunci paranteza va avea valoarea 11, $b primind valoarea 11, iar partea dreaptă a primului egal va fi evaluată la 11+33 adică 44, $a primind valoarea 44.

Şi „şmecheriile” PHP nu se opresc aici. Egalul admite punerea unui operator aritmetic în faţă, pentru „compactare”. Astfel, în loc de $a=$a+4; putem scrie mai scurt $a+=4;, ceea ce în minte am putea citi „$a primeşte valoarea lui însuşi, incrementată cu 4”. Similar putem avea $a-=4; echivalent cu $a=$a-4; şi $a*=4; echivalent cu $a=$a*4; şi aşa mai departe. Tot pentru operativitate mai există nişte operatori foarte-foarte utili. De exemplu dacă vrem să incrementăm cu 1 valoarea lui $a am scrie fie $a=$a+1; fie mai scurt $a+=1; sau… direct ++$a; sau $a++; – care este diferenţa? O vom înţelege dintr-un exemplu: să spunem că $a este 3. Dacă vom scrie echo $a++; se va afişa 3 după care $a va fi crescut la 4. Prima oară s-a folosit $a, şi abia apoi a fost incrementat (semnele ++ sunt după, deci operaţia de incrementare s-a făcut după). Dacă avem $a fiind 3 şi vom scrie echo ++$a; atunci în primul rând se va face incrementarea şi apoi afişarea, deci se va afişa 4! Similar putem scrie în loc de plus plus cu minus minus, pentru decrementare.

Să trecem acum la operatorii pentru comparaţie. În mod obişnuit poate ne-am gândi la $a=$b, doar că aceasta e o atribuire. Începătorii vor face frecvent această greşeală! Corect este, dacă vrem să aflăm dacă sunt egale, să folosim dublu-egal, adică $a==$b (ca să nu intrăm în ceaţă vom spune doar că sunt cazuri în care vom folosi chiar şi trei de egal, dar nu intrăm în detalii). Pentru a vedea dacă valorile sunt diferite putem folosi două variante: fie $a<>$b, fie $a!=$b. După cum intuiţi, pentru mai mare folosim >, pentru mai mic folosim <, iar pentru mai mare sau egal folosim >=, în timp ce pentru mai mic sau egal folosim <= (ca să reţineţi gândiţi-vă cum rostiţi: nu rostiţi "egal sau mai mic", caz în care am scrie =<, ci "mai mic sau egal", deci scriem "<="). Cât priveşte operatorii pe texte (stringuri), deja l-am folosit, nu am avut ce face. Vi-l amintiţi? Era punctul. Scriam echo "Ma cheama ".$nume; pentru a afişa "Ma cheama Ionel", presupunând că în variabila $nume am pus valoarea "Ionel". O altă combinaţie pentru stringuri este punct egal: astfel, $nume="Ionel"; $nume.=" Popescu"; va face ca la final în $nume să avem "Ionel Popescu", pentru că în a doua operaţie am avut o concatenare echivalentă cu $nume=$nume." Popescu". Mai sunt operatori? Mai sunt... dar nu ne sunt încă foarte utili. Prefer să mergem cu paşi mici şi lucrurile să vă fie clare (pe cât posibil; sigur nu reuşesc 100%), decât să fiu exhaustiv pe un anumit subiect. Acum ca recapitulare un mic cod în care vedem operatorii în acţiune. Aţi putea încerca să faceţi pe interpretorul PHP pentru a spune valorile şi apoi să vă verificaţi dacă acelea sunt :) .

[PHP]$a = 7;
$b = 3;
echo "Adunare: ".($a+$b)."
„;
echo „Scadere: „.($a-$b).”
„;
echo „Inmultire: „.($a*$b).”
„;
echo „Impartire: „.($a/$b).”
„;
echo „Modul (rest): „.($a%$b).”
„;
echo „Operatorul egal: „.($x=($y=8)+9).”
„;
echo „Plus 2: „.($a+=2).”
„;
echo „Minus 2: „.($a-=2).”
„;
echo „Inmultit cu 2: „.($a*=2).”
„;
echo „Impartit la 2: „.($a/=2).”
„;
echo „cu ++ dupa „.($a++).”
„;
echo „acum este „.$a.”
„;
echo „cu ++ inainte „.(++$a).”
„;
echo „acum este „.$a.”
„;
echo „egale? „.($a==$b).”
„;
echo „diferite? „.($a<>$b).”
„;
echo „mai mare? „.($a>$b).”
„;
echo „mai mic? „.($a<$b)."
„;[/PHP]

Înainte să închei aş mai spune doar că există o precedenţă a operatorilor, dar aceasta o ştim de la matematică. Dacă de exemplu avem 3+4*5 evident că nu se va face 3+4 şi apoi înmulţirea, ci 4*5 şi apoi adunarea. E evident, dar uneori putem greşi. În PHP sunt mulţi operatori (nu am pomenit nimic de exemplu de cei pe biţi, de cei logici…), deci precendenţa e importantă. Pentru moment însă ea coincide, pentru operatorii de mai sus, cu ceea ce am învăţat la matematică. Dacă dorim forţarea unei ordini, folosim evident parantezele: (3+4)*5.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (2 evaluări, media: 5,00 din 5)
Loading...Loading...

2 comentarii

  1. WOW! Articolul se aseamana cu o ‘bomba de informatie’. E super!

  2. Asa e: e un articol foarte bun. Si de folos.


Lasă un răspuns

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