Az sszes PHP szkript utastsok sorozatbl ll. Ezek az az utastsokat csoportostani lehet; utastsblokkba foglalhatk kapcsos zrjelek segtsgvel. Meghatrozhatunk krlmnyeket, feltteleket az utasts vgrehajtsra. Most az ilyen utastsokrl lesz sz.
Az if szerkezet
Az if utasts szerkezet egy felttelesen vgrehajtand utastst jell meg. Mindjrt elejn azzal kezdenm hogy az if tpus elgazsokra gyakran van szksg, ha tbb vlasztsi lehetsgnk van s dnteni kvnunk az rtkeikre alapozva. Ezt - mint szmos ms programnyelvben - az if utastssal tudjuk elrni. Az if felttel szintaktikja: <?php
if ( felttel )
{
vgrehajtand kd; // csak akkor lesz vgrehajtva, ha a felttel igaz
}
?>
Itt a zrjelek kztt szerepl kd csak akkor lesz vgrehajtva, ha a felttel igaz.
Ha nem akarunk bonyoldni a zrjelekkel s hamis gat sem terveznk akkor van egy "csnybb" de gyorsabb megolds: <?php
if (felttel)
utasts1;
utasts2;
?>
Itt ha igaz a felttelnk akkor lefut az utasts1 s 2 de ha hamis akkor csak az if utn tallhat els parancs!
fel...
Az if prja - az else g
Meghatrozhatunk egy alternatv utastst is, ami akkor fog lefutni, ha a felttelnk hamis. Ehhez az elz kdunkat kiegsztjk egy else ggal. <?php
if ( felttel )
{
esemny ha igaz a felttel;
}
else
{
esemny ha hamis a felttel;
}
?>
gyeljnk r, hogy az if felttele utni rsznl sosem tesznk ; pontosvesszt, ezt a program hibazenettel djazza. Lssunk egy konkrtabb pldt: <?php
$llapot = "aktv";
if ($allapot == "passzv")
{
print "Passzv az llapotom!";
}
else
{
print "Aktv az llapotom";
}
?>
A kifejezsnk eredmnyt megnzheted itt (7/1 demo).
fel...
Felttelek tbb lpsben - az elseif szerkezet
Amennyiben tovbbi feltteleket terveznk arra is talltak megoldst a ksztk szmunkra. Ezt az elseif szerkezettel rhetjk el, ami tulajdonkppen tbb if s else g egyms utnisga. <?php
$atlag = 3;
if ($atlag == 1)
{
print "Rossz tanul vagy!";
}
elseif ($atlag == 2)
{
// ez akkor fut le ha az if felttele hamis, s ez igaz
print "Tanulj Tn tanulj, kettes az tlagod...";
}
elseif ($atlag == 3)
{
// ez pedig akkor fut le ha a korbbi felttelek hamisak de ez igaz
print "Ht";
}
elseif ($atlag == 4)
{
print "4-es tlag, lehet ez jobb is.";
}
elseif ($atlag == 5)
{
print "Gratullunk strber vagy!";
}
?>
Mint ltjuk, egy if kifejezst tbb elseif is kvethet. Az elseif g csak akkor hajtdik vgre, ha az t megelz if kifejezs, s az sszes kztes elseif kifejezsek FALSE rtkek, de az adott elseif kifejezse TRUE. Az elseif rhat gy is: else if, mindkett szablyos.
A kifejezsnk eredmnyt megnzheted itt (7/2 demo).
fel...
A switch kifejezs
Habr ez a kifejezs szemly szerint nem a kedvencem de legalbb iyen rtkes. Egy pontos kifejezst vr tlnk (szmot, logikai rtket vagy karakterlncot) s annak az eredmnytl fgg kimenetet ad. A switch mkdse: <?php
switch ( kifejezs )
{
case rtk:
esemnyek;
break;
case rtk:
esemnyek;
break;
default:
esemnyek;
break;
}
?>
A switch megkapja a kirtkelend kifejezsnket s annak az rtkeit vizsglja. Minden case elemmel megvizsglja az rtket, ha igaz az rtk akkor lefutnak az utastsok, majd a break utasts befejezi a ciklust. (ha kihagyjuk a break-et akkor tovbbfut a ciklusunk s ez gondokat okozhat!) Vegyk szre mg: a case utn nem az eddig megszokott ; pontosvessz, hanem : kettspont van. gyeljnk r a hasznlatkor. A default esemny akkor fut le ha nincs igaz case g, utna is a break zrja be az elgazsunkat. Ha egy kirtkelend kifejezs tbb lehetsges rtkvel kell ms-ms mkdseket vezrelni, a while szerkezet sok elseif gpelstl szabadthat meg minket.
Lssunk most egy lbb pldt erre a szerkezetre is: <?php
// kifejezsnk legyen a ht napja betve kirva - ma:
switch ( date("l", time()) )
{
case "Monday":
print ("Kirz a hideg, kezddik a heti mel.");
break;
case "Tuesday":
case "Wendesday":
case "Thursday":
print ("Dolgozni kell, nincs semmi letkedvem.");
break;
case "Friday":
print ("Utols munkanap kezd jkedvem lenni.");
break;
case "Saturday":
print ("Hurr, htvge. Megynk peczni!");
break;
case "Sunday":
print ("Vekkert bekapcsolni, holnap jra mel.");
break;
default:
print ("Ha ezt a feliratot ltod, keress msik programozt ;-)");
break;
}
?>
Itt lthatunk egy jdonsgot is: mivel nem tettk ki a brake utastst a 'kedd', szerda' utn, a kirtkels nem llt meg - gy tudtunk tbb lehetsges llapotra azonos eredmnyt generlni. Errl ksbb mg ejtnk nhny szt.
A kifejezsnk eredmnyt megnzheted itt (7/3 demo).
fel...
Az elgazsok alternatv szintaxisa
Elgazsunkat nha egyszerbben is megadhatjuk: <?php
(kifejezs) ? esemny ha igaz a felttel : esemny ha hamis;
?>
gy rzem ezen nicsen mit magyarzni ha tmren szeretnk dolgozni s nem akarunk csak igaz hamis eredmnyt akkor ez a tkletes megolds. Lssunk erre is egy pldakdot: <?php
$iq = 130;
($iq == 128) ? print "128 Az IQ" : print "Nem annyi az IQ";
?>
Megemltend mg, hogy az if szerkezet lezrsra hasznlhatjuk az endif utastst is. Az albbi kt kifejezs egyenrtk: <?php
if ($a == 12)
{
print "Az a most ppen 12."
print "Azaz pros szm";
}
?>
<?php
if ($a == 12)
print "Az a most ppen 12."
print "Azaz pros szm";
endif
?>
Sokszor sszetett, tbbszrsen elgaz kifejezseknl ez a megolds tlthatbb kdot eredmnyez.
Eddig nhol hasznltunk kapcsos zrjeleket, mshol nem. Mirt?
Kapcsos zrjeleket csak akkor kell hasznlni, ha tbb kifejezst akarunk egy blokkba sszefogni - akkor ezek egytt kerlnek vgrehajtsra. Ha csak egy kifejezsnk van, a kapcsos zrjel elhagyhat. Az utols pldban az endif hasznlata helyettestheti a kapcsos zrjeleket. |