Elágazások a PHP-ban (if és switch feltételes utasítás)

Ebben a cikkben a feltételes utasításokról (angolul conditional statements), azaz elágazásokról lesz szó. A PHP-ban két elágazást különböztetünk meg, az egyik az if…else, míg a másik a switch.

Elágazások a PHP-ban (if és switch feltételes utasítás) című cikk borítóképe

Elágazások a PHP-ban (if és switch feltételes utasítás)

Ebben a cikkben a feltételes utasításokról (angolul conditional statements), azaz elágazásokról lesz szó. A PHP-ban két elágazást különböztetünk meg, az egyik az if…else (vagy egyszerűn if), míg a másik a switch-case (vagy simán switch).

Mik azok az elágazások, feltételes utasítások?

A programozásban akkor beszélünk elágazásról, amikor a továbbhaladás iránya valamilyen feltételtől függ. Azért is nevezzük feltételes utasításnak, mert a feltétel függvényében dől el, hogy milyen utasításokat fog végrehajtani a program.

php elagazas felteteles utasitas magyarul abrazolas abra
A kép kattintásra nagyobbodik!

A fenti ábra segít egy kicsit jobban elképzelni a fent említett fogalmat. Szóval vegyük úgy, hogy van egy feltételünk, például, hogy a vizsgált szám osztható-e kettővel. A feltétel résznél ezt a program megvizsgálja. Legyen a vizsgált számunk 4, mivel ez osztható kettővel (úgy hogy ne adjon maradékot), így az igaz ág utasításblokkja fog lefutni. Lefutás után a lenti üres kör irányába megy tovább a program. Nézzünk egy másik számot, legyen ez az 5, mivel ez nem osztható 2-vel úgy, hogy ne adjon vissza maradékot, így ebben az esetben a hamis ágra fogunk belépni, itt is lefutnak az ezen az ágon lévő utasítások, majd megyünk tovább az üres kör irányába. Fontos, hogy bármelyik ágon megyünk tovább, ha a program elvégezte az adott ág utasításait, akkor ugyanabba a pontba fog visszaérkezni, jelen esetben az üres kör irányába.

Mikor érdemes elágazást használni?

Elágazást értelemszerűen akkor érdemes használni, amikor valamilyen feltétel eredménye alapján más és más utasítást szeretnénk végrehajtatni a programunkkal.

Nézzünk pár példát, hogy egyszerűbb legyen elképzelni:

  • ha szeretnénk szétválogatni a páros és a páratlan számokat
  • ha szeretnénk szétválogatni a nullánál kisebb és nagyobb számokat
  • ha azt szeretnénk, hogy az oldalunkra csak 18 évnél idősebbek léphessenek be
  • ha nem alapján más és más megszólítást szeretnénk
  • ha szeretnénk tudni, hogy valaki rendelkezik-e egy adott tulajdonsággal


Ezek nagyon lebutított példák, melyeket csak azért hoztunk, hogy könnyebb legyen szemléltetni, hogy milyen esetekben érdemes elágazásokat használni. Az általános szabály továbbra is a fent említett, miszerint akkor kell elágazást használnunk, amikor valamit meg kell vizsgálnunk és a vizsgálat függvényében különböző műveleteket kell végeznünk vele.

Milyen elágazások találhatóak a PHP-ban?

Fentebb már említettük, hogy milyen elágazások találhatóak a PHP-ban, de ezt egy kicsit kiegészítenénk.

A PHP-ban megtalálható elágazások:

  • if
    • if
    • if…else
    • if…elseif…else
  • switch

Valójában az elágazásoknak csak két nagyobb csoportja van, de az if elágazásnak három fajtája létezik, melyeket lentebb bővebben is kifejtünk.

if elágazás

Az if elágazás az egyik legalapvetőbb feltételes utasítás, alapértelmezetten csak egyetlen egy ága van, azaz ha igaznak bizonyul a feltétel, akkor belépünk az igaz ágra és ott megcsináljuk az elgondolt műveleteket, ha hamis, akkor szimplán átugorjuk az egész elágazást, hiszen nincs hamis ág.

Szintaktika

if (FELTÉTEL) {
   // igaz ág utasításai
}
Code language: PHP (php)

Az „if” kulcsszó után megadjuk a feltételt, majd kapcsoszárójelek közé megírjuk az igaz ág utasításblokkját. Egysoros igaz ági utasítás esetén használhatjuk a rövidebb formulát is:

if (FELTÉTEL) IGAZ.ÁG.UTASÍTÁSA;
Code language: PHP (php)

Példa if elágazásra

PHP kód

<?php
	$szam1 = 4;
	$szam2 = 5;

	if (($szam1 % 2) == 0) { // igaz lesz, ezért kiírja, hogy "Páros"
		echo "Páros";
        }
    
        if (($szam2 % 2) == 0) { // hamis lesz, ezért nem ír ki semmit
		echo "Páros";
        }
?>

Code language: HTML, XML (xml)

Eredmény

Páros

if…else elágazás

Az if elágazásunk kaphat egy hamis ágat is az else személyében.

Szintaxis

if (FELTÉTEL) {
   // igaz ág utasításai
} else {
   // hamis ág utasításai
}
Code language: PHP (php)

Az if feltétel utasításblokkja után írunk egy else kulcsszót, majd jöhet a hamis ág utasításblokkja.

Természetesen itt is érvényes, hogy ha egyetlen egy utasításból áll az adott kódblokkhoz tartozó rész, akkor nem kell kapcsoszárójeleket használnunk. Megadhatjuk így:

if (FELTÉTEL) IGAZ.ÁG.UTASÍTÁSA;
else HAMIS.ÁG.UTASÍTÁSA;
Code language: PHP (php)

Példa else…if elágazásra

PHP kód

<?php
    $szam1 = 4;
    $szam2 = 5;
    
	echo "szam1: ";
     if (($szam1 % 2) == 0) {
	echo "Páros";
     } else {
        echo "Páratlan";
     }    
     
     echo "<br>" . "szam2: ";
     if (($szam2 % 2) == 0) {
	echo "Páros";
     } else {
        echo "Páratlan";
     }    
?>
Code language: HTML, XML (xml)

Eredmény

szam1: Páros
szam2: Páratlan

elseif elágazás

Ha nem lenne elég számunkra két elágazás, hanem szeretnénk újabbakkal kiegészíteni a feltételes utasításunkat, akkor gond nélkül megtehetjük egy elseif-fel. Ebben az esetben az „elseif”-nek is lesz egy külön feltétele.

Szintaktika

if (FELTÉTEL) {
   // igaz ág utasításai
} elseif (FELTÉTEL) {
  // hamis ág utasításai
} else {
  // hamis ág utasításai
}
Code language: PHP (php)

Az elágazásunkba bármennyi elseif elágazást beszúrhatunk, nem csak egyet.

Példa elseif elágazásra

PHP kód

<?php
	$szam1 = -4;
    $szam2 = 0;
    $szam3 = 5;
    
	echo "szam1: ";
     if ($szam1 > 0) {
	echo "Pozitív";
     } elseif ($szam1 < 0) {
        echo "Negatív";
     } else {
        echo "Nulla";
     }
     
     echo "<br>" . "szam2: ";
     if ($szam2 > 0) {
	echo "Pozitív";
     } elseif ($szam2 < 0) {
        echo "Negatív";
     } else {
        echo "Nulla";
     }    
     
     echo "<br>" . "szam3: ";
     if ($szam3 > 0) {
	echo "Pozitív";
     } elseif ($szam3 < 0) {
        echo "Negatív";
     } else {
        echo "Nulla";
     }    
?>
Code language: HTML, XML (xml)

Eredmény

szam1: Negatív
szam2: Nulla
szam3: Pozitív


Csak egyetlen egy kiemelt blokkot kell néznünk jelen pillanatban. (Nem akartuk behozni a ciklusokat, nehogy valakit bezavarjon.) A fent írt kód úgy működik van egy számunk, nézzük most a $szam1-et. Az if elágazás feltételénél megvizsgáljuk, hogy a $szam1 nagyobb-e, mint 0 vagy sem. Ha igaz, akkor kiírjuk, hogy „Pozitív”, ha nem igaz, akkor átugrunk az elseif-re, ahol megvizsgáljuk, hogy a $szam1 kisebb-e, mint 0. Ha kisebb, akkor kiírjuk, hogy negatív. Az utolsó else ágra már csak a nulla jut el, így kiírjuk, hogy „Nulla”.

switch elágazás

A switch elágazás egy olyan elágazás, amelynél csakúgy vizsgálunk egy feltételt, amit itt kifejezésnek fogunk nevezni, majd megpróbáljuk megtippelni a lehetséges eredményeit a kifejezésnek. Egy példán elmagyarázva sokkal egyértelműbb lesz.

Szintaxis

switch (KIFEJEZÉS) {
  case 1:
    UTASÍTÁSOK;
    break;
  case 2:
    UTASÍTÁSOK;
    break;
  case 3:
    UTASÍTÁSOK;
    break;
  default:
    UTASÍTÁSOK;
}
Code language: PHP (php)

A „switch” kulcsszó után megadunk egy kifejezést, ami általában egy változó. A „case” szavak után adjuk meg azokat az értékeket, amelyek a fentebb megválasztott kifejezésünk lehetséges értékei lehetnek. A lehetséges értéket egy kettőspont követi. Ezekután jönnek az utasítások, mely után a „break” kulcsszó.

A megadott feltételek (case) közül annak az utasításblokkja fog lefutni, amelynek az értéke megegyezik a fent megadott kifejezés értékével. A programnak a „break” utasítás jelzi, hogy eddig tartott az ehhez a feltételhez tartozó utasításblokk. Ha a program megtalálja a neki megfelelő esetet, akkor futtatja az utasításblokkot és amikor eléri a „break” utasítást, akkor megszakad az egész switch elágazás futása. A program a switch elágazás után folytatódik tovább.

A legvégén van egy „default” utasítás, amely abban az esetben fut le, ha a fent megadott esetek közül egyik sem igaz a fenti feltételünkre, kifejezésünkre.

Példa swich-case elágazásra

PHP kód

<?php

echo "nyelv1: PHP -> ";
$nyelv1 = "PHP";

switch ($nyelv1) {
  case "PHP":
    echo "A kiválasztott nyelv a PHP.";
    break;
  case "JS":
    echo "A kiválasztott nyelv a JS.";
    break;
  case "HTML":
    echo "A kiválasztott nyelv a HTML.";
    break;
  default:
    echo "Sem a PHP, sem a JS, sem a HTML nincs kiválasztva.";
    }
    
echo "<br> nyelv2: CSS -> ";
$nyelv2 = "CSS";

switch ($nyelv2) {
  case "PHP":
    echo "A kiválasztott nyelv a PHP.";
    break;
  case "JS":
    echo "A kiválasztott nyelv a JS.";
    break;
  case "HTML":
    echo "A kiválasztott nyelv a HTML.";
    break;
  default:
    echo "Sem a PHP, sem a JS, sem a HTML nincs kiválasztva.";
}
?>
Code language: HTML, XML (xml)

Eredmény

nyelv1: PHP -> A kiválasztott nyelv a PHP.
nyelv2: CSS -> Sem a PHP, sem a JS, sem a HTML nincs kiválasztva.


A fenti példában is elég, ha csak a felső kijelölt blokkra tekintünk. Felvettük a „$nyelv1” változóba a PHP szót, majd a switch-be beraktuk a „$nyelv1”-et feltételnek. Alatta a „case” kulcsszavaknál azt vizsgáljuk, hogy melyik eset teljesült, azaz melyikkel azonos a „$nyelv1” tartalma. Megegyezhet a PHP-val, a JS-el vagy a HTML-el. Amelyikkel megegyezik, az ahhoz tartozó utasítások fognak lefutni. Ha egyik eset sem felel meg a feltételünk számára, mint például, amikor a HTML-t keressük, de nincs ilyen eset, akkor a „default”-hoz tartozó utasítások fognak lefutni.

Ha hasznos volt számodra, akkor kérlek oszd meg másokkal is, hogy ezzel támogass minket!