PHP izrazi i operatori

Kao i veliki broj jezika koji vuku poreklo iz jezika C, i jezik PHP je zasnovan na izrazima (expressions). To znači da izrazi i njova evaluacija u stvari predstavljaju osnovnu komponentu programskog jezika.

U izrazima učestvuju dva tipa elemenata: operandi i operatori. Operandi (konstante, promneljive, pozivi funkcija) su vrednosti sa kojima se radi, dok su operatori oznake operacija koje se izvode (sabiranje, moženje, upoređivanje...).

Da bi izraz kao celina imao vrednost, moraju je imati i svi operandi u trenutku evaluacije (izračunavanja) izraza.

Aritmetički operatori

Ovi operatori rade sa numeričkim vrednostima. Ako zadate vrednosti nisu numeričke, PHP će prvo pokušati da ih konvertuje.

-$xnegacija $x (promena znaka)
$x + $yzbir $x i $y (sabiranje)
$x - $yrazlika $x i $y (oduzimanje)
$x * $yproizvod $x i $y (množenje)
$x / $ykoličnik $x i $y (deljenje)
$x % $ymodulus $x i $y (ostatak celobrojnog deljenja)
$x ** $yeksponent $x na $y (stepenovanje)

Operacija deljenja vraća racionalan broj (float), osim u slučaju ako su vrednosti deljive jedna drugom.

Ostatak celobrojnog deljenja je definisan samo nad celim brojevima, tako da, čak iako su operandi racionalni, radi samo sa njihovim celim delovima ("otkida" decimale). Rezultat će imati znak prvog operanda.

Operatori uvećanja i umanjenja

Operatori inkrementacije (uvećanja) i dekrementacije (umanjenja), su primarno numerički (celobrojni), iako se mogu koristiti i sa drugim tipovima. U pitanju su unarni operatori - ne povezuju dva operanda već se primenjuju samo na jedan.

Specifični su po tome što ne samo da vraćaju vrednost, već i menjaju vrednost operanda. Operand se uvećava/umanjuje za jedan. To znači da operand mora biti promenljiva.

++$xprefiksno uvećanje $x
--$xprefiksno umanjenje $x
$x++postfiksno uvećanje $x
$x--postfiksno umanjenje $x

Prefiksno uvećanje/umanjenje znači da se prvo poveća (umanji) vrednost promenljive, a onda takva uvećana vrednost učestvuje u izrazu.

Postfiksno uvećanje/umanjenje znači da se u izrazu koristi originalna vrednost promenljive, a onda se tek njena vrednost menja.

Relacioni operatori

Ovi operatori suštinski predstavljaju upoređivanja operanda. Mogu se upoređivati operandi različitih tipova, s tim što se tipovi konvertuju ako je moguće. Tekstualni podaci se takođe mogu upoređivati i poštuje se redosled po kodnom rasporedu što znači da je "A" manje od "B" ali i "B" manje od "a".

$x < $yTRUE ako je $x manje od $y
$x > $yTRUE ako je $x veće od $y
$x <= $yTRUE ako je $x manje ili jednako od $y
$x >= $yTRUE ako je $x veće ili jednako od $y
$x == $yTRUE ako je $x jednako $y (kada se konvertuju tipovi)
$x != $yTRUE ako je $x različito od $y (kada se konvertuju tipovi)
$x <> $yTRUE ako je $x različito od $y (kada se konvertuju tipovi)
$x === $yTRUE ako je $x jednako $y i ako su istog tipa
$x !== $yTRUE ako je $x različito od $y ili nisu istog tipa

Jednakost racionalnih brojeva

Nikada ne upoređujte da li su dva float broja jednaka. Ono što mi mislimo da je isto, (npr. 2==2) zbog beleženja u memoriji, za PHP može biti sasvim različito (1.9999999 == 2.0000001).

Da biste ispitali jednakost dva broja u pokretnom zarezu, morate usvojiti pojam tačnosti. Npr. "dva broja su jednaka uz tačnost od 0.00001".

Pogledajte kako bismo na ispravan način uporedili dva float-a.


  <?php
    $epsilon = 0.000001;
    
    $x = 2;
    $y = 9 / 4.5;
    
    // if ($x==$y) // NEISPRAVNO

    if ( ($x-$y) < $epsilon ) {
      // JEDNAKI
    }
    else {
      // RAZLIČITI
    }
  ?>
  

Logički operatori

Logički operatori služe za formiranje kompleksnih uslova. Njihovi operandi su logičke vrednosti (true i false).

!$xTRUE ako ne važi $x (negacija)
$x && $yTRUE ako važi $x i važi $y (konjukcija)
$x || $yTRUE ako važi $x ili važi $y (disjunkcija)
$x AND $yTRUE ako važi $x i važi $y (konjukcija) ali sa slabim prioritetom
$x OR $yTRUE ako važi $x ili važi $y (disjunkcija) ali sa slabim prioritetom
$x XOR $yTRUE ako važi samo $x ili važi samo $y (ekskluzivna disjunkcija) sa slabim prioritetom

Iako operatori AND i OR funkcionišu isto kao i operatori && i ||, imaju mnogo niži prioritet (niži čak i od operatora dodele!) - prema tome, pazite se.

Operator konkatenacije

Ovo je jedini operator namenjen striktno radu sa stringovima. Služi da poveže dva stringa u jedan.

$x . $ypovezan string, sastavljen od stringova $x i $y

Operacije nad bitovima

Oberacije nad bitovima manipulišu nad samim bitovima celobrojnih operanda. Rezultat je numeričkog tipa, ali same operacije tretiraju bitove dva broja kao logičke vrednosti (1 kao true, 0 kao false).

~$xnegacija bitova $x ("obrće" bitove)
$x & $yAND-ovanje bitova $x i $y
$x | $yOR-ovanje bitova $x i $y
$x ^ $yXOR-ovanje bitova $x i $y
$x << $yšiftovanje bitova $x ulevo za $y mesta
$x >> $yšiftovanje bitova $x udesno za $y mesta

Operatori dodele

Operatori dodele služe da se neka vrednost (sa desne strane) operatora, dodeli promenljivoj (sa leve strane operatora). To znači da se sa leve strane uvek mora naći promenljiva.

promenljiva = vrednost;

Veliki broj operatora se može kombinovati sa operatorom dodele i tako dobijamo kompleksne operatore dodele, koji skraćuju pisanje programa. Sledeće dve linije programa su u stvari ista stvar:

$p += vrednost; $p = $p + vrednost;
$x = $y$x dobija vrednost $y
$x += $y$x dobija vrednost zbira $x i $y
$x -= $y$x dobija vrednost razlike $x i $y
$x *= $y$x dobija vrednost proizvoda $x i $y
$x /= $y$x dobija vrednost količnika $x i $y
$x %= $y$x dobija vrednost modulusa $x i $y
$x .= $y$x dobija vrednost povezivanja stringova $x i $y
$x &= $y$x dobija vrednost AND-ovanja bitova $x i $y
$x |= $y$x dobija vrednost OR-ovanja bitova $x i $y
$x ^= $y$x dobija vrednost XOR-ovanja bitova $x i $y
$x <<= $y$x dobija vrednost $x sa šiftovanim bitovima ulevo za $y mesta
$x >>= $y$x dobija vrednost $x sa šiftovanim bitovima udesno za $y mesta

I dodela je operacija

I dodela je operacija, što znači da ima vrednost. Vrednost operacije dodele je jednaka vrednsoti koja se dodeljuje, što znači:


  <?php
    $x = 5;  // sve ukuono ima takođe vrednost 5
    
    // znači da možemo napisati i:
    $y = $x = 5;   // $x postaje 5, a onda i $y postaje 5
    
    // što je isto kao:
    $x = 5;
    $y = 5;
    
    // moguće je i nešto ovako:
    $y = ($x = 5) + 3;  // $x postaje 5, a onda $y postaje 5+3, tj. 8
  ?>
  

Operator izbora

Ovo je jedini ternarni (povezuje tri operanda) operator u jeziku PHP. Služi da napravi izbor između dve vrednosti - ima vrednost drugog, odnosno trećeg operanda, zavisno od logičke vrednosti prvog operanda.

Prvi operand ima logičku vrednost, a drugi i treći bilo kakvu (čak i ne moraju da budu istog tipa).

$x ? $y : $zako je $x TRUE, ima vrednost $y, u suprotnom vrednost $z
  1. PHP.net, Expressions
  2. PHP.net, Operators
Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies). Detaljnije o tome možete pročitati u tekstu o našoj politici privatnosti.