PHP umožňuje vykonávať najrôznejšie matematické operácie. Teraz si ich predstavíme.
Celé čísla (nazývané int
) môžeme zapísať nasledujúcimi spôsobmi:
$a = 154; // kladné číslo $b = -215; // záporné $c = 015; // číslo v osmičkovej sústave $d = 0x5B; // hexadecimálne číslo
Desatinné čísla nazývame tiež float
. Miesto desatinnej čiarky používame bodku. Čísla sa dajú zapisovať aj v tzv. vedeckej notácii (s použitím exponenta 10).
$e = 57.4; $f = 2.8e3; // 2 celé 8 krát 10 na tretiu $g = 8E-5; // 8 krát 10 na mínus piatu
Skúsime spočítať, koľko je 2 plus 2. Výsledok vypíšeme.
echo (2 + 2);
Teraz trochu zložitejší príklad.
$mensenec = 12; $mensitel = 5; $vysledok = -($mensenec - $mensitel); echo $vysledok;
Najprv sa vypočíta príklad v zátvorke (menšenec mínus menšiteľ) a potom sa zmení znamienko. Výsledok: -7.
Prehľad základných aritmetických operátorov:
Operátor | Popis |
---|---|
+ | sčítanie |
- | odčítanie |
* | násobenie |
/ | delenie |
% | zvyšok po delení |
Výsledkom nasledujúceho delenia:
echo (7 / 3);
je 2.33333333333. To je samozrejmé, ale možno sa pýtate, aký operátor potom slúži na celočíslené delenie (výsledok by bol 2). Odpoveď: Žiadny. PHP nemá celočíselné delenie. Musíme zaokrúhliť nadol výsledok bežného delenia.
Programátori často používajú operácie takéhoto typu:
/* zväčšenie čísla o 6 */ $premenna = $premenna + 6;
Preto si to zjednodušili a vymysleli kombinované operátory. Predchádzajúci kód sa dá zapísať aj takto:
$premenna += 6;
Sčítanie však nie je jediná operácia, s ktorou to funguje. Poznáme aj operátory -=
, *=
, /=
a %=
.
Aj nasledujúce operátory slúžia na zjednodušenie kódu. Príkazom
$cislo++;
zväčšíme hodnotu premennej cislo o 1. Je to teda to isté ako
$cislo = $cislo + 1;
Analogicky, pomocou $cislo--
hodnotu premennej zmenšíme o 1.
Poznáme i operácie ++$c
a --$c
. Ak ++
napíšeme pred názov premennej, hodnota sa najprv zväčší a potom sa vráti výsledok.
$c = 1; echo ++$c;
Príklad vypíše: 2. Teraz skúsme dať ++
za názov premennej.
$c = 1; echo $c++; // vypíše 1 echo " "; echo $c; // vypíše 2
V tomto prípade sa najprv vypísala pôvodná hodnota $c (1) a až potom sa zväčšila. Pri ďalšom výpise bola už hodnota správna (2).
Pre ich pochopenie je potrebné vedieť pracovať s číselnými sústavami, najmä s binárnou.
Operátor &
nastaví výslednému číslu jednotkové bity všade tam, kde sú aj v prvom, aj v druhom čísle.
Číslo 240 = 1111 0000 Číslo 170 = 1010 1010 240 & 170 = 1010 0000
Nasledujúci príklad vypíše 160 (binárne 1010 0000):
echo 240 & 170;
Operátor |
(zvislá čiara) nastaví bity „1“ tam, kde sú jednotky aspoň v jednom z dvoch zadaných čísel. No a ^
spôsobí, že výsledné číslo bude mať jednotkové bity tam, kde ich malo práve jedno zo zadaných.
Unárny operátor ~
nastaví všetky bity na opačné, ako boli v pôvodnom čísle:
Číslo 43 = 10 1011 ~Číslo = 01 0100
Nasledujúci príklad:
$cislo = 43; echo ~$cislo;
by mal teda vypísať 20 (binárne 01 0100). To však nie je pravda. Pred 10 1011 (teda 43) je ešte kopa núl, aby číslo zaberalo 32 bitov. Príklad teda vypíše -44, čo je decimálny zápis čísla 111...(kopa jednotiek)...01 0100. Nemusíte sa nad tým trápiť, ani mne sa to nepáči, ale je to už raz tak.
Asi vás to už nudí, ale ešte musím spomenúť operátor <<
, ktorý posunie bity doľava o daný počet miest.
Číslo 7 = 00111 7 << 2 = 11100 = 28
echo 7 << 2; // vypíše 28
Podobne, >> posúva doprava.