Algoritmy s PHP

Ján Guniš, PF UPJŠ, Košice

 

Premenné a typy premenných v PHP

Premenné slúžia na uchovanie hodnôt, ktoré potrebujeme v skripte. Premenné začínajú znakom "$" za ktorým nasleduje meno premennej. Premenná je deklarovaná v okamžiku keď ju prvý krát použijeme. Pokiaľ do premennej nič neuložíme priraďovacím príkazom, má hodnotu prázdneho reťazca. Doporučujem nespoliehať sa na to a premenné vždy inicializovať priradením nejakej hodnoty.

Priraďovací príkaz má tvar "=" a používa sa nasledovne: $premenna=vyraz. Výraz na pravej strane sa vyhodnotí a výsledná hodnota sa priradí do premennej na ľavej strane. V okamžiku ako sa do premennej priradí hodnota, určí sa jej typ. PHP pozná päť typov:

integer (celé číslo)
double (desatinné číslo)
string (znakový reťazec)
array (pole)
object (objekt)

Premenné sa podľa potreby automaticky konvertujú na príslušný typ ( ...ach úbohí pascalisti).

 

Integer

Premenná typu integer je reprezentovaná štyrmi bajtamy a jej rozsah je od -2 147 483 648 do 2 147 483 647. Priradenie hodnoty do premennej typu integer môže vyzerať nasledovne:

$a=123;   //do premennej sme priradili celé číslo123
$a=-123;  //do premennej sme priradili celé číslo -123
$a=0123;  //do premennej sme priradili celé číslo123 v osmičkovej sústave (číslo začína 0)
$a=0x12A; //do premennej sme priradili celé číslo123 v šestnástkovej sústave (číslo začína 0x)

 

Double

Premenná typu double je reprezentovaná ôsmymi bajtamy a jej rozsah je od -1.7 · 10308 do 1.7 · 10308. Najmenšie kladné číslo je 3.4 · 10-324. Pri type double máme k dispozícií 15 platných číslic. Priradenie hodnoty do premennej typu double môže vyzerať nasledovne: 

$a=1.23;    //do premennej sme priradili desatinné číslo1,23
$a=-1.2e3;  //do premennej sme priradili desatinné číslo -1,2 · 103
$a=1.2E-3;  //do premennej sme priradili desatinné číslo 1,2 · 10-3

 

String

Reťazce sa PHP zapisujú do úvodzoviek alebo apostrofov. Pokiaľ potrebujeme úvodzovky použiť vo vnútri reťazca, použijeme tzv. escape sekvenciu: \". Ak potrebujeme v reťazci použiť spätné lomítko, použíjme \\.. Pomocou \ môžeme do textu vložiť aj ďalšie užitočné znaky:

Sekvencia Význam
\\
\n
\r
\t
\"
\$
\nnn
\xnn
\ spätné lomítko
nový riadok
návrat vozíka
tabulátor
úvodzovky
znak dolára
znak, ktorého kód v osmičkovej sústave je nnn
znak, ktorého kód v šestnástkovej sústave je nn

Escape sekvencie a odkazy na premenné môžeme požiť len v reťazcoch, ktoré sú uzavreté v úvodzovkách. S textovou premennou môžeme pracovať ako s celkom, ale môžeme pristupovať aj k jej jednotlivým znakom.

PHP príkaz Výsledok v prehliadači
$prem=20;
echo "Premenná \$prem má hodnotu $prem";     
echo 'Premenná \$prem má hodnotu $prem';
$prem="Ahoj";
echo $prem[2];

Premenná $prem má hodnotu 20
Premenná \$prem má hodnotu $prem

o

 

Array

Pole je špeciálna dátová štruktúra, v ktorej jedna premenná môže obsahovať niekoľko hodnôt. K jednotlivým hodnotám sa pristupuje pomocou indexu, ktoré je uvedený v hranatých zátvorkách.

Premenná $pole, ktorá je typu array obsahuje tri prvky. $pole[0]="Janko";
$pole[1]="Jožko";
$pole[2]="Mirko";
 
Jednotlivé prvky poľa môžu byť rôzneho typu: $pole[0]="Janko";
$pole[1]=123;
$pole[2]=1.23e+34;
 
Indexom poľa môže byť aj reťazec: $pole["meno"]="Janko";
$pole["vek"]=123;
$pole["plat"]=1.23e+34;
 

 

Pole môže inicializovať niekoľkými spôsobmi:

Inicializácia priradením hodnôt jednotlivým prvkom $pole[0]="Janko";
$pole[1]="Jožko";
$pole[2]="Mirko";
 
Indexovanie poľa začína od prvého voľného indexu, v tomto prípade od nuly $pole[0]="Janko";
$pole[]=123;
$pole[]=1.23e+34;
 
Úsporný zápis inicializácie poľa $pole=array("Janko", "Jožko", "Mirko")
 
Úsporný zápis inicializácie poľa od iného indexu, v tomto prípade $pole[2] má hodnotu "Janko", $pole[5] má hodnotu "Jožko", $pole[6] má hodnotu "Mirko" a $pole["posledny"] má hodnotu "AAA" $pole=array(2=>"Janko"
           ,5=>"Jožko"
           ,"Mirko"
           ,'posledny'=>"AAA"
           );
 

 

Samozrejme, že PHP pozná aj viacrozmerné pole. Jeho inicializácia môže vyzerať nasledovne:

$matica=array(array(1,2,3),
              array(4,5,6),
              array(7,8,9));

K jednotlivým prvkom poľa potom pristupujeme pomocou dvojitého indexu. Napr.: $matica[2][3] má hodnotu 6. Zápis $matica[3] vracia pole, ktoré obsahuje hodnoty tretieho riadku našej matice.

Pre prácu s premennou typu pole používame niekoľko funkcií:

funkcia význam
count($pole)
reset($pole)
current($pole)
next($pole)
key($pole)
list($p1,$p2,$p3)=$pole
list($p1,,$p3)=$pole
vráti dĺžku poľa
nastaví ukazovateľ na prvý prvok poľa
vracia hodnotu prvku poľa na ktorý ukazuje ukazovateľ
presunie ukazovateľ na nasledujúci prvok a potom vráti jeho hodnotu
vráti index prvku poľa na ktorý ukazuje ukazovateľ
do premenných $p1, $p2, $p3 priradí prvky trojrozmerného poľa
do premenných $p1, $p3 priradí prvý a tretí prvok trojrozmerného poľa