A szerver beállítása után kezdjünk ismerkedni a nyelv alapjaival. Kezdésként végig kell néznünk a legfontosabb parancsokat, szerkezeti egységeket, változótípusokat.
1. Változók és állandók
Az állandó (konstans), mint a neve is mutatja csak egyszer kaphat értéket a program futása során, onnantól fogva bárhol elérhető, és új értéket nem tud felvenni. A változó értéke a program futása során tetszőleges alkalommal változtathat.
Minden változót a $ jellel kezdünk (pl. $valtozo="béka"; echo $valtozo;).
A konstansoknak nincs prefixük (pl. define("konstans","123456"); echo konstans;).
Ha a nyelv kikényszeríti a típushoz tartózó szabályok végrehajtását (ez általában a típuskonverziók végrehajtását jelenti, lehetőleg információ vesztés nélkül), akkor a nyelv erősen típusos, ellenkező esetben gyengén típusos. A PHP egy gyengén típusos nyelv. A változókat nem kell előzetesen deklarálni (létrehozni, és megmondani a leendő típusát), és egyazon változó felvehet tetszőleges típusú értéket. A típuskonverzió sem igényel (minden esetben) külön eljárást.
$a=12;
$b=$a." lepke száll a réten.";
A PHP rendszer az alábbi alaptípusokat támogatja:
- egész --> $a = -455;
- valós --> $b = 98.56;
- karakterlánc --> $c = "alma";
A szöveges változók lehetnek egy vagy több karakter hosszúak. A szöveges kifejezéseknél két szöveges kifejezés összefűzhető a "." (pont) operátorral:
$b = "fa";
$c = "alma" . $b ; // almafa
A változók a skalár érték mellett tömb típusúak is lehetnek. A tömb kezelés egyedi vonása, hogy tömb létrehozása az elemeinek a megadásával történik, nem előzetes helyfoglalással.
A tömbelemek indexe az egész típusú értékek mellett lehet asszociatív, mikor egy szöveges kifejezés adja meg az index értékeket:
$b[1] = 3;
$b[2] = "lepke";
$b["alma"] = 4;
Többdimenziós tömbök esetében a C szintaktikát követve minden dimenziónál külön szögletes zárójelben adjuk meg az indexértéket:
$a[1][2] = 3;
A változókat, mint a példákból is láthattuk, nem kell előre definiálni, s típusukat ezért az értékadás határozza meg. Azonban a PHP figyelmeztetést küldd, ha egy olyan változót próbálunk használni, aminek előzetesen még nem adtunk értéket.
$a=1;
$c=$b+$a; // ekkor figyelmeztet, hogy nem ismeri $b-t
Ellenőrizhetjük, hogy az adott változót használtuk-e már:
$a=1;
$b=2;
if (isset($c)) $d=$c+$b+$a; // az isset-tel megvizsgáltuk, hogy létezik-e $c, ha létezik, használjuk
else $d=$b+$a; // ha nem létezik, nem használjuk
Egyazon változóhoz egymás után más és más típusú kifejezés is rendelhető, ezért annak típusa a program futása során dinamikusan, menet közben megváltozhat.
$a=5;
$a=$a.". elem"; // 5. elem
Változók összefűzésére több lehetőség is kínálkozik:
$szoveg="van "; // van
$szoveg=$szoveg."hátralévő "; // van hátralévő
$szoveg="$szoveg életed "; // van hátralévő életed
$szoveg.="első napja."; // van hátralévő életed első napja
$szoveg=."Ma "; // Ma van hátralévő életed első napja
2. Vezérlőszerkezetek
2.1. Elágazások, feltételek
2.1.1. IF
A változók taglalásában már használtunk egy IF–et, hogy eldöntsük, az adott változó létezik-e. Az If működése:
if (feltétel) { // ha a feltétel kiértékelése igaz
# utasítás(ok)
}
elseif (feltétel 2) { // ha az előző nem igaz, de ez igaz
# utasítás(ok)
} else { // ha egyik sem volt igaz
# utasítás(ok)
}
Az IF vezérlőszerkezet roppant egyszerű, és minden programozási nyelvben megtalálható.
2.1.2. SWITCH
A SWITCH kifejezés pontos megértéséhez a php.net hivatalos manual-ját vettem alapul!
A switch kifejezés hasonló egy sereg IF kifejezéshez, ahol a kifejezésekben ugyanaz szerepel. Gyakori, hogy ugyanazt a változót (vagy kifejezést) kell összehasonlítani több különböző értékkel, és más-más kódot végrehajtani a változó (kifejezés) értékétől függően. Erre való a switch.
Megjegyzés: Néhány más nyelvvel ellentétben, a continue utasítás használható switch-ben és ugyanúgy működik mint a break. Ha van egy switch egy cikluson belül, és a ciklusban szeretnél továbblépni, a continue parancsot kell kiadnod.
Nézzünk egy páldát IF-fel:
if ($i == 0) {
echo "i most 0";
} elseif ($i == 1) {
echo "i most 1";
} elseif ($i == 2) {
echo "i most 2";
}
Ugyanez switch-el:
switch ($i) {
case 0:
echo "i most 0";
break;
case 1:
echo "i most 1";
break;
case 2:
echo "i most 2";
break;
}
A switch-ben nem csak számok, hanem string-ek is ellenőrizhetők:
switch ($string) {
case "alma":
echo "most alma";
break;
case "körte":
echo "most körte";
break;
}
A hibák elkerülése végett fontos megérteni, hogy hogyan kerül végrehajtásra a switch szerkezet. A switch utasításról utasításra hajtódik végre. Nem hajtódik végre semmilyen utasítás, csak akkor, ha egy olyan case kifejezést talál a PHP, amely egyezik a switch kifejezés értékével. Ezután a PHP addig folytatja az utasítások végrehajtását, amíg el nem éri a switch blokk végét, vagy nem találkozik egy break utasítással.
FONTOS! Ha nincs break egy case-hez tartozó utasítás(sorozat) végén, akkor a PHP végrehajtja a soron következő case-hez tartozó utasításokat is!
A switch kifejezésben a feltétel csak egyszer értékelődik ki és a kapott eredmény lesz összehasonlítva a case kifejezések mindegyikével. Ha elseif kifejezéseket használsz, a kifejezések újra és újra kiértékelődnek. (és újra és újra be kell gépelni. Ez nem csak fárasztó, de hiba forrása is lehet.) Ha a kifejezés bonyolult, vagy egy ciklus belsejében van, a switch a gyorsabb.
Egy különleges eset a default [alapértelmezett] címke. Ez a címke bármivel egyezik, amivel a korábbi case elemek nem egyeztek. Ennek kell az utolsó elemnek lennie. Például:
switch ($i) {
case 0:
echo "i most 0";
break;
case 1:
echo "i most 1";
break;
case 2:
echo "i most 2";
break;
default:
echo "i se nem 0, se nem 1, se nem 2";
}
A case kifejezés tetszőleges kifejezés, aminek egyszerű a típusa, vagyis egész vagy lebegőpontos szám, vagy string. Tömbök és objektumok itt nem használhatók, csakis egy-egy elemük ill. változójuk egyszerű típusként. (pl.: $tomb['elem'])
2.2. Ciklusok
2.2.1. WHILE
A legegyszerűbb ciklus: WHILE.
Ez egy előltesztelős ciklus. A PHP mindaddig ismétli az utasításokat, amíg a feltétel kiértékelése igaz.
$a=3;
while (strlen($a) < 3) {
$a="0".$a;
}
Ez egy remek példa, mert egyszerre 2 különböző témára is illik. Elsősorban most a while ciklus miatt nézzük, ám ehhez egy másik tulajdonágát is tudni kell, az pedig az strlen() függvény bemutatása. Az strlen() függvény magadja a változó hosszát, azaz, hogy hány karakterből áll.
$apple="alma";
$length=strlen($apple); // 4
Térjünk vissz a while magyarázatára. A fenti kód értelmében a PHP addig fog futni, amíg $a hossza kisebb, mint 3, tehát a futás befejeztével $a 3 karakter hosszú lesz, jelen esetben "3" helyett "003" lesz az értéke.
2.2.2. DO-WHILE
A while párjának tekinthető a DO-WHILE ciklus, mely ellentétben a while-al, hátultesztelős, azaz előbb lefuttatja az utasításokat, majd utána értékeli ki a feltételt.
$i = 0;
do {
echo("");
}
while ($i > 1);
Lévén, hogy a do-while (Pascalban repeat until) hátul tesztelős, ezért egyszer tuti lefut. És mivel a példámban $i > 1 nem teljesül, mert 0 nem nagyobb 1-nél, ezért az első futás után ki is lép a ciklusból. A do-while ciklus a gyakorlatban nem igazán használatos.
2.2.3. FOR
A leggyakrabban használt ciklus, a fix lépésszámú ciklus, azaz a FOR. Ez a ciklus fix darabszámszor fogja lefuttatni a kódot. Tömbökön végigszaladni legtöbbször ezzel a legegyszerűbb.
for ($i=0; $i<count($tomb); $++) {
echo "A tömb $i. eleme: ".$tomb[$i]."<br/>";
}
Itt megtanultunk még egy fontos függvényt, ez a count(), mellyel egy tömb elemszámát lehet megtudni.
2.2.4. FOREACH
A PHP 4-től a Perlhez és más nyelvekhez hasonlóan létezik az ún. FOREACH szerkezet is. Ez jól használható eszközt ad a tömbökön végzett iterációkhoz. Más típusú vagy inicializálatlan változóra nem lehet használni, azokra hibát jelez. Két szintaxisa létezik, a második egy apró, de annál hasznosabb kiegészítéssel nyújt többet az elsőhöz képest.
// egyszerű
foreach ($tomb as $ertek) {
# utasítások
}
// bővített
foreach ($tomb as $kulcs => $ertek) {
# utasítások
}
Az első forma végigmegy a $tomb tömbön. Minden alkalommal az aktuális elem értéke a $ertek változóba kerül, és a belső tömb mutató növelésre kerül. (A következő alkalommal tehát a soron következő elemet fogja venni).
A második forma ugyanezt végzi el, de az aktuális elem kulcsa a $kulcs változóba kerül.
$tomb["nev"]="Mágus";
$tomb["e-mail"]="magus@orseolo.hu";
foreach ($tomb as $kulcs => $ertek) {
echo "$kulcs = $ertek
";
}
A program futását követően a következőt kapjuk:
nev = Mágus e-mail = magus@orseolo.hu
2.2.5. BREAK és CONTINUE
A FOR, FOREACH, WHILE, DO-WHILE és SWITCH szerkezetekből kilépni idő előtt a BREAK utasítással lehet. A break elfogad egy elhagyható szám paramétert, amely megadja, hogy hány egymásba ágyazott struktúrából kell egyszerre 'kiugrani'.
A CONTINUE ciklusok belsejében használható arra, hogy átugorjuk az aktuális iteráció hátralevő részét, és a végrehajtást a feltétel-kiértékeléssel, majd a következő iterációval folytassuk.
A PHP-ben a switch utasítást a continue definíciója miatt a ciklus utasítások közé sorolják.
A continue elfogad egy elhagyható szám paramétert, amely megadja, hogy hány egymásba ágyazott struktúrának a hátralévő részét kell átugrani.
Ha tetszik Önnek ez a tartalom:

