2012. január 11., szerda

PHP - elágazások

Sokszor van rá szükségünk, hogy "valamit" csak akkor hajtsunk végre, ha egy feltétel teljesül. Tehát például csak akkor küldjön nekem elmailt az űrlap, ha a tárgy, az üzenet és a címzett is ki van töltve. A mai napon ezekkel az elágazásokkal ismerkedünk meg.
Az email küldés "forgatókönyvét" (ha minden adat meg van adva, folytathatod a küldést) az if utasítással fordíthatjuk PHP-kóddá.
Az if utasítás ara szolgál, hogy döntéseket hozzunk.

Az if utasítás 3 részből áll
  • az if kulcsszó
  • feltétel
  • művelet
Nézzünk egy példát:

if(5 == 6)
{
  echo "Kiírandó szöveg";
}

Most pedig mennyünk sorjában.
  • az if az utasítás kezdetét jelzi
  • a  feltétel ellenőrzi, hogy 5 egyenlő e 6-tal. (temészetesen nem)
  • ha a feltétel IGAZ, akkor teljesül a művelet (kiírja, hogy Kiírandó szöveg... nem írja ki, mert 5 != 6)
A feltétel mindig IGAZ vagy HAMIS értéket ad. Ez lehet változó, függvényhívás de összehasonlítás is (lsd. előző lecke). 

Tehát:
 HA a feltétel igaz
AKKOR végezd el a műveletet

Az if bármilyen összehasonlítást tud vizsgálni. Tehát nem csak egyenlőséget (pl. nagyobb, kisebb mint, nagyobbegyenlő, kisebbegyenlő, nemegyenlő...). 

Ha például azt szeretnénk ellenőrizni, hogy a $string változónk üres-e azt jelenlegi tudásunk szerint így tennénk meg:

if($string == "")
{
művelet...
}

De ez nem valami elegáns megoldás. 
A PHP-nek van egy csomó beépített függvénye (a függvény leegyszerűsítve egy előre megírt kód). Ilyen például az isset() függvény. Ez azt vizsgálja, hogy a változó kapott e már értéket. 
Például:

$x;
$y;
$y = 5;
if(isset($y)){
echo "A változónak van értéke";
}

Tehát akkor ad vissza TRUE értéket, ha a változó deklarálva van és ÉRTÉKE is van. 
A másik számunkra érdekes függvény az empty(). Ez pedig azt vizsgálja, hogy a stringnek üres értéke van e. 
Például:

$x;
$y;
$y = "";
if(isset($y)){
echo "A változó üres karakterlánc";
}

Tehát akkor ad vissza TRUE értéket, ha a változó értéke (karakterláncoknál) "", NULL, 0 vagy false. 

TEHÁT az isset() azt vizsgálja, hogy a változó létezik e, az empty() pedig azt, hogy tárol e valamilyen értéket.

Az már megvan, hogy mi van akkor, ha teljesül a feltétel. De hogyan adhatok meg műveletet, ha a feltétel nem teljesül?

Erre való az else...

Az elsse logikája valahogy így néz ki:

HA az utasítás teljesül
AKKOR hajtsa végre a műveletet
AMÚGY írjon ki hibaüzenetet

Tehát egy próbakód:

if(5 == 6)
{
   echo "Öt egyenlő hattal";
}

else 
{
   echo "Öt nem egyenlő hattal";
}

Az else-nek nem kell feltétel, mert akkor hajtódik végre, ha a másik feltétel nem teljesül.

Ha több feltételünk is van, akkor az elseif utasítást használjuk

HA a feltétel teljesül
AKKOR hajtsa végre az utasítást
HA az előző feltétel nem teljesült, akkor vizsgálja meg ezt a feltételt
MAJD hajtsa végre az utasításokat

Próbakód:

$nev = "József";

if($nev == "Antal")
{
  echo "Szevusz Antal";
}

elseif ($nev == "Pista")
{
  echo "Szervusz Pista";
}

else
{
   echo "Szervusz Józsi";
}

Az elseifnek kell feltétel.

A negyedik elágazástípusunk a switch elágazás. Ez arra való, hogy több utasításból egyet hajtsunk végre. 

HA az érték 0
AKKOR hajtsd végre ezt az utasítást
HA az érték 1
AKKOR hajtsd végre ezt az utasítást
HA az érték 2
AKKOR hajtsd végre ezt az utasítást

Próbakód:

$x = 1;

switch ($x)
{
case 1:
  echo "A szám 1";
  break;
case 2:
  echo "A szám 2";
  break;
case 3:
  echo "A szám 3";
  break;
default:
  exho "Nem tudom milyen szám";
}

A switch után zárojelben a vizsgálandó változót adom meg. 
Utána minden egyes case egy "esetet" vizsgál. Tehát case 1 azt jelenti, hogy ha a vizsgált változó 1, akkor... A kettőspont után a végrehajtandó műveletek, majd a break; segítségével jelzem, hogy itt a vége annak az esetnek. A default ág akkor hajtódik végre, ha egyik eset sem teljesül. 

A következő leckében a ciklusokkal ismerkedünk meg.

Nincsenek megjegyzések:

Megjegyzés küldése