| Rubrika Pre začiatočníkov
IV. Základy: Výrazy, operátory a reťazce
Výrazom v PHP môžme nazvať hocičo čo má nejakú hodnotu. Napríklad aj také premenné, alebo konštanty sú výrazy.
Operátory sú znaky pomocou, ktorých vykonávame potrebné úkony medzi výrazmi. Majú určitú prioritu – tabuľka priorít je uvedená nižšie. Takisto ako v iných programovacích jazykoch je možné operátory vyjadrovať skráteným zápisom.
PHP pozná základné 2 typy operátorov :
unárne (+, -) binárne (+, -, *, / )
PHP pozná ešte špeciálne typy unárnych operátorov :
inkrement (prefix ++) – ++výraz – výraz sa najprv zväčší
o jednotku a až potom je jeho nová hodnota vrátená ako hodnota výrazu
dekrement (suffix –) – výraz++ – najprv je vrátená pôvodná hodnota
výrazu a až potom je zväčšený o jednotku
Niekedy je potrebný výraz, ktorého výsledkom je buď pravda (true), alebo nepravda (false). PHP na tento výraz nemá špeciálny typ, ale použije sa klasický integer. Kde nulová hodnota znamená false a nenulová true.
<? $a = 10; ++$a; //nacita jednotku a vrati novu hodnotu = 11 $b = ++$a; // takisto nacita jednotku a vrati novu hodnotu = 12 echo $b; // vypise 12 $a = 10; ++$a; // hodnota = 11 $b = $a++; // vrati podvodnu hodnotu = 11 a potom pripocita jednotku echo $b; //vypise 11 ?>
Tabuľka operátorov PHP
| Operátor | Popis |
|---|---|
| == | rovná sa |
| != | nerovná sa |
| && | logický súčin „AND“ |
| || | logický súčet „OR“ |
| | | zápor, negácia |
| < | menej ako |
| > | viac ako |
| <= | menší, alebo rovná sa |
| >= | väčší, alebo rovná sa |
Nemýľte si == a =. Ak =
znamená priradenie hodnoty premennej ($a = 5; // hodnota premennej sa
zmenila na 5) tak == je porovnávací operátor,
znamená rovná sa a hodnotu premennej nemení! ($a ==5;
// rovná sa $a piatim? ; výsledok áno / nie, hodnota premennej sa
nemení)
Tabuľka skrátených zápisov
| Zápis | Skrátený zápis |
|---|---|
| a = b + c | nie je |
| a = a + c | a += c |
| a = a – c | a -= c |
| a = a * c | a *= c |
| a = a / c | a /= c |
| a = a % c | a %= c |
PRIORITA VYHODNOCOVANIA OPERÁTOROV
| Priorita | Operátor | Asociativita |
|---|---|---|
| 1 | () [index poľa] -> | ---------------> |
| 2 | ! – ++ (typ) @ | <--------------- |
| 3 | * / % | ---------------> |
| 4 | + – . | ---------------> |
| 5 | <<>> | ---------------> |
| 6 | < <= > >= | ---------------> |
| 7 | != == <> | ---------------> |
| 8 | & | ---------------> |
| 9 | ˆ | ---------------> |
| 10 | | | ---------------> |
| 11 | && | ---------------> |
| 12 | || | ---------------> |
| 13 | ?: | <--------------- |
| 14 | = += -= *= /= %= >>= <<= &= |= ˆ= | <--------------- |
Výraz: if ($b !=0 && $a * $b < $x), znamená asi
toľko (časť v zátvorkách): $b sa nerovná nule (pre prípad
násobenia nulou) a $a * $b je menšie ako $x.
K násobeniu nulou nedôjde, pretože $b !=0 ukončí výraz.
Prečo $b !=0 ukončí výraz? Môže za to vlastnosť nazvaná
short circuit (skrátene vyhodnocovanie výrazov). Hneď ako je možné vo
výraze určiť konečný výsledok, vyhodnocovanie skončí.
Z tabuľky je jasné, ktorý operátor má akú prioritu. Ak sa stretnú dva operátory tej istej priority vyhodnocujú sa postupne zľava doprava. Inak implicitný smer je presne opačný zprava doľava. Vysvetlíme si to na výraze :
<? if ($plat >=10000 && $plat <= 20000) ?>
Ideme zprava doľava (implicitný smer) a nájdeme výraz s najvyššou prioritou. Podľa asociativity postupujeme zľava doprava a nájdeme dva operátory rovnakej priority. Takže prvé je $plat je väčší, alebo rovná sa 10000, ďalej $plat je menší, alebo rovná sa 20000 a nakoniec logický súčin &&.
REŤAZCE Čo je reťazec?
Je to súbor znakov, či už písmen, číslic, alebo špeciálnych znakov. Zjednodušene by sa dalo povedať, že je to hodnota premennej typu string. Posledný operátor s ktorým Vás oboznámim je „.“ (bodka). Slúži na spájanie reťazcov. Použitie napovie jednoduchý príklad:
<? $text_1 = "Hello"; echo $text_1."World !"; //vypíše Hello World! //teraz skrátený zápis $text_1 .= "World !"; echo $text_1; //vypíše takisto Hello World! ?>
PHP FUNKCIE PRE PRÁCU S REŤAZCAMI
Funkcia strlen()
Funkcia strlen() nám vracia počet znakov (vrátane medzier) v reťazci. Jej jediným parametrom je daný reťazec.
echo strlen("počet znakov!"); //vráti hodnotu 13.
Funkcia strpos()
Funkcia strpos() nám vráti prvú pozíciu hľadaného výrazu v reťazci. Má dve parametre – reťazec v ktorom vyhľadávame pozíciu a reťazec, ktorého pozíciu hľadáme. Viac už objasní príklad :
echo strpos("počet znakov!","znakov"); // vráti hodnotu 6.
Číslo 6 je prvá pozícia hľadaného reťazca, tj. písmeno „z“. Dôvod prečo nám funkcia nevracia hodnotu „7“, keďže písmeno „z“ je siedmym znakom je ten, že prvá pozícia – písmeno „p“ má hodnotu „0“.
Funkcia explode()
Touto funkciou zabezpečíme transformáciu reťazca na pole. Má tri
parametre: explode(„deliaci
znak“,„reťazec“,„limit“).
„deliaci znak“ (povinný parameter) je znak, ktorý sa použije na
selekciu reťazca a tento sa neskôr využije na vytváranie poľa. Viac
objasní príklad.
„reťazec“ (povinný parameter) je reťazec, ktorý má byť transformovaný
na pole
„limit“ (voliteľný paramter) určuje maximálny počet prvkov poľa
<? $retazec = "Prvý prvok poľa/Druhý prvok poľa/Tretí prvok poľa"; $pole = explode("/",$retazec); //Výsledok je nasledovný $pole[0] = Prvý prvok poľa $pole[1] = Druhý prvok poľa $pole[3] = Tretí prvok poľa ?>
Ako deliaci znak sme použili „/“, preto sa po každej lomke vytvorí nový prvok poľa. Deliacim znakom môže byť čokoľvek, vrátane celej skupiny znakov.
Funkcia implode()
Táto funkcia je presným opakom explode();, čiže nám pole transformuje na
reťazec. Má dve parametre:
explode(„oddeľovač“,„pole“). „oddeľovač“
(voliteľný parameter) Je znak (môže byť aj medzera, ktorá je defaultne
nastavená), ktorý sa pridá do reťazca medzi jednotlivé prvky poľa.
„pole“ (povinný parameter) Je pole, ktoré chceme transformovať na
reťazec.
//Vezmime si pole použité v predošlom príklade : $pole = array("Prvý prvok poľa","Druhý prvok poľa","Tretí prvok poľa"); $retazec = implode("/",$pole); echo $retazec; //Vypíše "Prvý prvok poľa/Druhý prvok poľa/Tretí prvok poľa".
Funkcií na prácu s reťazcami je podstatne väčšie množstvo, o nich však v samostatných článkoch pre pokročilejších kodérov.
Matej Lacko
naspäť
prispieť do diskusie [0]
Vyhľadávanie
Viac z rubriky
Pridať komentár



