V tretej časti nášho PHP seriálu sme si povedali pár slov o vkladaní PHP zdrojového kódu do štruktúry HTML dokumentu. Dnes sa pristavíme pri Arrays (teda poliach), povieme si pár slov o triedach a objektoch a na koniec sa budeme venovať operátorom a vetveniu programu.
Polia - alebo arrays.
Ide o základný štruktúrovaný typ. Pole prezentované ako jedna premenná vám umožní ukladať viacero prvkov rovnakého typu. Prvky v poli sú indexované, pričom index nemusí byť iba číslo, môže to byť aj reťazec. Pole môžete vytvoriť funkciami array() a list() alebo zadaním hodnoty každému prvku:
$a[0] = 1;
$a[1] = 1;
$a["a"] = 1;
Toto všetko sa dá urobiť funkciou array() nasledovne:
$a = array (0 => 1,
1 => 1,
"a" => 1);
Ak indexy nezadáte, budú prvky do poľa pridávané, pričom index sa bude automaticky zvyšovať:
$a[] = 1;
$a[] = 2;
Na usporiadavanie prvkov v poli existuje v PHP veľa funkcií, najviac budete používať asi sort(), ostatné nájdete v manuáli. Ďalšou užitočnou funkciou je count(), ktorá zistí počet prvkov v poli, ktoré jej zadáte ako parameter.
PHP umožňuje tiež prácu s viacrozmernými poľami:
$a[1] = 1; // jednorozmerné pole
$a[1][1] = 1; // dvojrozmerné pole, matica
$a[1]["a"][2] = 1; // trojrozmerné pole, môžete mixovať
reťazcové a číselné indexy, funguje pri poliach všetkých rozmerov
Triedy, objekty.
Objektovo orientované programovanie je už, dá sa povedať, vyššia trieda než štruktúrované programovanie. PHP podporuje OOP, syntax je podobná C. Keďže cieľom tohto seriálu nie je naučiť sa OOP, ale PHP, uvediem iba príklad, z ktorého programátori znalí OOP hneď pochopia, ako to v PHP funguje, no a ostatní túto pasáž môžu kľudne preskočiť.
Definícia triedy s jedným atribútom a jednou metódou:
class Trieda {
int $atribut;
function funkcia() {
echo "Telo funkcie";
}
}
Deklaráciu premennej ako objekt typu Trieda prevedieme takto:
$premenna = new Trieda;
Operátory
1) Aritmetické - základné, veľmi jednoduché:
Znak Zápis Názov Popis
+ $a+$b Sčítanie Súčet argumentov (v tomto prípade $a a $b)
- $a-$b Odčítanie Rozdiel argumentov
* $a*$b Násobenie Súčin argumentov
/ $a/$b Delenie Podiel argumntov
% $a%$b Modulus Zvyšok po celočíselnom delení argumntov
2) Priraďovacie - slúžia na priradenie nejakej hodnoty premennej:
$a = 1; // premennej $a priradime hodnotu 1
$a += 1; // premennej $a pricitame hodnotu 1, ekvivalentne k $a = $a+1;
// da sa pouzit aj s ostatnymi aritemtickymi operatormi (-,*,/,%)
$a = "a"; // premennej $a priradi retazec "a"
$a .= "aaa"; // premennej $a pripoji retazec "aaa"
3) Porovnávacie operátory - slúžia v kontrolných štruktúrach na vyhodnocovanie podmienok:
Znak Zápis Názov Popis
== $a==$b Rovná sa Vráti TRUE, ak sa argumenty rovnajú (v tomto prípade $a a $b)
=== $a===$b Identické Vráti TRUE, ak sú argumenty identické
(rovnaký typ i hodnota) - až v PHP4
!= $a!=$b Nerovná sa Vráti TRUE, ak sa argumenty nerovnajú
< $a<$b Menší ako Vráti TRUE, ak je prvý argument menší ako druhý
> $a>$b Väčší ako Vráti TRUE, ak je prvý argument väčší ako druhý
<= $a<=$b Menší alebo rovný Vráti TRUE, ak je prvý argument menší alebo rovný druhému
>= $a>=$b Väčší alebo rovný Vráti TRUE, ak je prvý argument väčší alebo rovný druhému
4) Inkrementačné a dekrementačné - slúžia na zvýšenie hodnoty premennej o 1 (rovnaké ako v C), môžu byť prefixové alebo postfixové, pri prvom type je najprv modifikovaná hodnota premennej a až potom je vrátená jej hodnota, druhý typ je opakom prvého:
Znak Zápis Názov Popis
++ ++$a Inkrementuj o 1 Zvýši hodnotu premennej $a o 1, potom vráti hodnotu
++ $a++ Inkrementuj o 1 Najprv vráti hodnotu $a, potom ju zvýši o 1
-- --$a Dekrementuj o 1 Zníži hodnotu premennej $a o 1, potom vráti hodnotu
-- $a-- Dekrementuj o 1 Najprv vráti hodnotu $a, potom ju zníži o 1
Na pochopenie nám poslúži jednoduchý príklad:
$a=10;
echo $a++; //vypíše 10, ale hneď nato bude hodnota $a rovná 11
$a=10;
echo ++$a; //vypíše 11
Ešte aby som vysvetlil možno neznámy výraz: echo slúži na vypísanie reťazca zadaného v úvodzovkách alebo premennej.
5) Logické operátory - slúžia tiež na vyhodnocovanie podmienok
Názov Zápis Popis
and $a and $b Vráti TRUE, ak oba argumenty sú TRUE (v tomto prípade $a a $b)
- možno nahradiť Céčkarským zápisom &&
or $a or $b Vráti TRUE, ak aspoň jeden argument je TRUE - možno nahradiť Céčkarským zápisom ||
xor $a xor $b Vráti TRUE, ak argumenty majú rôznu pravdivostnú hodnotu (jeden TRUE, druhý FALSE)
! ! $a Vráti TRUE, ak argument je FALSE
6) Bitové operátory - slúžia na nastavovanie jednotlivých bitov v integeroch:
Znak Zápis Názov Popis
& $a & $b AND Nastaví na 1 bity, ktoré sú nastavené na 1 v oboch argumentoch
(v tomto prípade $a a $b)
| $a | $b OR Nastaví na 1 bity, ktoré sú nastavené na 1 v hociktorom argumente
^ $a ^ $b XOR Nastaví na 1 bity, ktoré sú nastavené na 1 buď v jednom alebo v druhom
~ ~ $a NOT Nastaví na 1 bity, ktoré sú nastavené na 0 a naopak
<< $a << $b Bitový posun doľava Posunie všetky bity 1.arg.doľava o počet miest špec.v druhom argumente
>> $a >> $b Bitový posun doprava Posunie všetky bity 1.arg.doprava o počet miest špec.v druhom argumente
Kontrolné štruktúry a vetvenie programu
IF
Najzákladnejšou kontrolnou štruktúrou je podmienka (if). Jej syntax je zhodná s C:
if (podmienka) prikaz;
Najprv sa vyhodnotí podmienka a v prípade, že je pravdivá (TRUE), vykoná sa príkaz. Ak potrebujeme vykonať viac príkazov, musíme ich uzavrieť zloženými zátvorkami ako blok:
if (podmienka) {
prikaz1;
prikaz2;
prikaz3;
}
Niekedy (skoro vždy) však potrebujeme vykonať nejaké príkazy v prípade, že podmienka nebola splnená. Na to slúži výraz else, ktorý sa pridáva za podmienku:
if (podmienka) {
prikaz1;
prikaz2;
prikaz3;
}
else { // bude vykonane iba vtedy,
prikaz1; // ak bude podmienka vyhodnotena ako FALSE
prikaz2;
prikaz3;
}
Špeciálnym prípadom je elseif, ktorý má podobnú funkciu ako else, ibaže mu pridáva ešte jednu podmienku, teda rovná sa konštrukcii else if (podmienka):
if (podmienka) {
prikaz1;
prikaz2;
prikaz3;
}
elseif (podmienka2) { // bude vykonane iba vtedy,
prikaz1; // ak bude podmienka vyhodnotena ako FALSE
prikaz2; // a zaroven podmienka2 bude TRUE
prikaz3;
}
else { // bude vykonane iba vtedy,
prikaz1; // ak bude podmienka aj podmienka2 vyhodnotena ako FALSE
prikaz2;
prikaz3;
}
Podmienka if ponúka aj alternatívnu syntax - za podmienkou nasleduje dvojbodka (:) a na konci výraz endif (osobne však radšej používam tú Céčkarskú):
if ($a > $b):
echo "a je vacsie ako b";
echo "
";
elseif ($a == $b):
echo "a sa rovna b";
echo "
";
else:
echo "a je mensie ako b";
echo "
";
endif;
Nabudúde budeme pokračovať v kontrolných štruktúrach, bohužiaľ na sľúbený príklad miesto nezostalo.