Algoritmy s PHP |
Ján Guniš, PF UPJŠ, Košice |
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).
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)
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
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 |
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"; |
Jednotlivé prvky poľa môžu byť rôzneho typu: | $pole[0]="Janko"; |
Indexom poľa môže byť aj reťazec: | $pole["meno"]="Janko"; |
Pole môže inicializovať niekoľkými spôsobmi:
Inicializácia priradením hodnôt jednotlivým prvkom | $pole[0]="Janko"; |
Indexovanie poľa začína od prvého voľného indexu, v tomto prípade od nuly | $pole[0]="Janko"; |
Ú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" |
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 |