PHP operatori
Kao i u matematici operatori omogućavaju izvršavanje operacija nad
promenljivima i konstantama, na primer sabiranja, množenja, itd. Operatori se
mogu pisati sa jednim, dva ili tri znaka. Postoje sledeći tipovi operatora:
- Aritmetički operatori
- Operator nad znakovnim nizom
- Operatori dodele
- Operatori poredjenja
- Logički operatori
- Operatori nad bitovima
- Ostali operatori
Aritmetički operatori
Operator |
Naziv |
Primer |
+ |
Sabiranje |
$a + $b |
- |
oduzimanje |
$a - $b |
* |
množenje |
$a * $b |
/ |
delenje |
$a / $b |
% |
Modulo |
$a % $b |
Evo primera upotrbe operatora:
$a = $b + $c;
Znak minus se koristi i za označavanje negativnih brojeva.
$a = - 1;
Ne treba posebno objasnjavati ove operatore, osim operatora modulo koji je
možda nepoznat. Modulo vraća ostatak celobrojnog deljenja promenjljive $a
promenjljivom $b. Na primer:
$a = 36;
$b = 5;
$c = $a % $b;
Promenjljiva $c imaće vrednost 2 jer je 36 / 5 = 7.2
Aritmetički operatori se isključivo primenjuju nad brojevima.
String operatori
Jedini operator nad stringovima je tačka "
.". Ovaj operator se koristi za spajanje dva i više znakovna izraza u jedan.
Sve će biti jasnije nakon sledećeg primera:
$a = "Ana ";
$b = "voli ";
$c = "Bobana";
$rezultat = $a . $b . $c;
Znakovna proemnjljiva $rezultat imaće vrednost "Ana voli Bobana".
Operator dodele
Operator dodele je matematički znak jednakosti " = ". Na primer:
$masa = 5;
Navedeni iskaz bi trebalo čitati: "promenjljivoj masi dodeljujemo vrednost 5".
Možemo pisati izraze slične sledećem:
$a = 2 + ($b = 3);
Vrednost promenjlive $a biće 5.
Kombinovani operator dodele
Kombinovani operatori dodele su sledeći:
$a += 5;
Isti je iskazu kao da smo napisali:
$a = $a +5;
Pored kombinovanog operatora " += " postoje i sledeći:
Operator |
Upotreba |
Ekvivalentan izrazu |
+= |
$a += $b |
$a = $a + $b |
-= |
$a -= $b |
$a = $a - $b |
*= |
$a *= $b |
$a = $a * $b |
/= |
$a /= $b |
$a = $a / $b |
%= |
$a %= $b |
$a = $a % $b |
.= |
$a .= $b |
$a = $a .$b |
Prefiksni i sufiksni operatori
Prefiksni i sufiksni operatori uvećanja imaju oznaku " ++ " a umanjenja " -- ".
$a = 10;
echo ++$a;
Prefiksni operator uvećanja ++ poveća vrednost promenjljive $a za 1 pa tek
onda se izvršava izraz echo$a. Znači kao rezultat ovih izraza ispisaće se u
našem slučaju 11. Potpuno identičan efekat ima i prefiksni operator umanjenja,
naravno sa tom razlikom što se vrednost promenjljive $a umanjuje za 1.
A sufiksno uvećanje (umanjenje) je sledeća logika:
$a = 10;
echo $a++;
U ovom slučaju prvo se ispisuje prvobitna vrednost promenjljive $a (znači
ispisuje se broj 10) pa nakon toga se vrednost promenjljive uvećava za 1 i
dodeljuje promenjljivoj $a. Tako na primer ako nastavimo gornju skripticu
sledećim izrazom:
echo $a;
Tek onda biće ispisan broj 11.
Sve isto se odnosi i na sufiksno umanjenje, naravno samo što je upitanju
umanjenje vrednosti promenjljive za 1.
Referentni operator dodele
Oznaka za referencu je znak " & ". Efekat ovog operatora najbolje možemo
objasniti na primeru:
$a = 5;
$b = $a;
Drugim iskazom kao što znamo pravimo kopiju promenjljive $a koju imenujemo sa
$b. E sad nakon toga u daljem toku programa ako promenimo vrednos promenjljive
$a, vrednost promenjljive $b kao što znamo i dalje će naravno ostati
nepromenjena. Medjutim ako napišemo ovako:
$a = 5;
$b = &$a;
Efekat će biti taj da ako u daljem toku programa promenimo vrednost
promenjljive $a, vrednost promenjljive $b neće ostati nepromenjen već će i on
biti automatski promenjen u novu vrednost koju ima promenjljiva $a.
Operatori poredjenja
Operator poredjenja ima simbol duplo jednako " == ". Kao
rezultat operatora poredjenja uvek dobijamo logičku vrednost true (istina) ili
false (laž) u zavisnosti od rezultata poredjenja. Ako napišemo:
$a == $b;
Ovim izrazom proveravamo da li su vrednosti ove dve promenjljive jednake.
Rezultat koji vraća ovaj izraz je true (istina) ako su jednake i false (laž) ako
nisu jednake. Operator jednakosti se lako brka sa operatorom dodele i ako dodje
do toga program neće raditi ono sto mi želimo. Na primer:
$a = 5;
$b = 7;
Rezultat izraza $a = $b biće TRUE jer operator " = " služi za dodeljivanje i
u ovom našem slučaju promenjljivoj $a uspešno je program dodelio vrednost koju
ima promenjljiva $b, odnosno vrednost 7. To je vrednost koja nije nula pa je
logička vrednost tog iskaza TRUE. Ako bi smo napisali $a == $b rezultat bi bio
FALSE jer 5 nije jednako 7. Kao što vidimo operator poredjenja i operator dodele
daju često kao rezultat suprotnu logiku, i zato moramo voditi računa da ih ne
pomešamo. Postoji i operator identičnosti čija je oznaka trostruko jednako " === ". Operator identičnosti vraća TRUE ako su obe vrednosti jednake i istog su
tipa. Evo tabelarna prestava operatora poredjenja:
Operator |
Ime |
Upotreba |
== |
jednako |
$a == $b |
=== |
identično |
$a === $b |
!= |
različito |
$a != $b |
<> |
različito |
$a <> $b |
< |
manje od |
$a < $b |
> |
veće od |
$a > $b |
<= |
manje ili jednako od |
$a <= $b |
>= |
veće ili jednako od |
$a >= $b |
Logički operatori
Želimo proveriti da li je vrednost promenjljive $a izmedju 10
i 100. Znači treba proveriti uslove $a >= 10 i $a <= 100. To radimo upotrebom
logičkog operatora konjukcije koji ima znak " && " ili " and " na sledeći način:
$a >= 10 && $a <= 100
Sve logičke operatore daću tabelarno:
Operator |
Ime |
Upotreba |
Rezultat |
! |
negacija |
!$b |
vraća true ako je $b false i obrnuto |
&& |
konjukcija |
$a && $b |
Vraća true samo ako su i $a i $b true |
|| |
disjunkcija |
$a || $b |
Vraća true ako je ili $a ili $b true |
and |
konjukcija |
$a and $b |
Isto kao && samo niži prioritet |
or |
disjunkcija |
$a or $b |
Isto kao || samo niži prioritet |
Ostali operatori
Ostali operatori su:
- Operator zarez " , " koristi se ze razdvajanje argumenata funkcija i stavki u spisku.
- Operatori " new " i " - > " koriste se za pravljenje objekta i za pristup članovima objekta
- Operatori elementa niza " [ ] " omogućavaju pristupu elementima niza. Koristi se i oznaka " => "
- Uslovni operator ima oznaku " ? : " . Logika ovog operatora videćemo na primeru:
($visina > 200 ? $b="visok" : $b="nizak");
Ako je promenjljiva $visina veća od 200 onda promenjljiva $b dobija vrednost
"visok" a ako je $visina manja od 200 onda $b dobija vrednost "nizak". Ako
želimo da se odma rezultat ispiše na ekran onda nam ne treba promenjljiva $b već
izraz možemo napisati ovako:
echo ($ocena > 50 ? "Položio" : "Pao");
- Operator potiskivanja greške sa oznakom " @ " se koristi ispred izraza kad ne želimo da posetioci sajta vide ispisivanje greške koja može nastati u toku
izvršenja tog izraza. To ispisivanje greške može odati bitne tajne podatke u vezi sajta.
- Operator izvršenja ima oznaku " ` ` " . Radi se o paru inverznih polunavodnika.
Inverzni polunavodnik se nalazi na tastaturu gde i znak ~. PHP će izvršiti
sve šta se nalazi izmedju inverznih polunavodnika u komandnom okruženju na
serveru. izlazni podaci komande pretstavljaju vrednost izraza.
Na UNIX serveru upotrebljava se:
$iz = `ls – la`;
echo "<pre>".$iz."</pre>"
A na windows serveru:
$out = `dir c:`;
echo "<pre>".$iz."</pre>"
U oba slučaja će se smestiti spisak dokumenata iz foldera u promenjljivu
$iz.