A PHP switch állítása

Tegyük fel, hogy van egy változónk, mely különböző úti célokat tartalmaz, és eme változó alapján szeretnénk más-más tanácsokat adni az utazóknak. Példánkban több úti célról van szó, így egy borzalmasan hosszú és bonyolult if/else if/else if/else blokkra lenne szükségünk. Nem hangzik túl jól, nem igaz? Nézzünk hát egy másik megoldást!

A switch állítás segítségével egyszerre ellenőrizhetjük az összes feltételt, a programozás pedig sokkal hatékonyabb lesz.

A switch állítás úgy működik, hogy megragad egy változót, melyet bemenetként (input) kezel, majd a változót a switch állításhoz beállított esetekhez (case) hasonlítja. Ahelyett, hogy minden elemet külön tesztelnénk, mint az if állítások esetében, a switch egyszerre valósítja ezt meg. Lássuk a szintaxist:

Switch (n) {
  case 1címke:
  // Kód, ami lefut, ha n=1címke
  break;
  case 2címke:
  // Kód, ami lefut, ha n=2címke
  break;
  ...
  default:
  // Kód, ami lefut, ha az n nem egyezik meg egyik esettel sem
}

 

Példa a PHP switch állítására

Ha visszatérünk a cikk elején említett utazós példához, akkor a $destination változó mellé a következő eseteket rendelhetjük: Las Vegas, Amszterdam, Egyiptom, Tokió és Hawaii. Lássuk, hogyan festene a kódunk, ha mindegyik úti cél mellé más-más tanáccsal szeretnénk kedveskedni a weboldalunkra látogató turistáknak!

 

PHP-kód:

$destination = 'Tokió';
echo 'Ide utazol: ' . $destination . '<br />';
switch ($destination) {
    case 'Las Vegas':
        echo 'Hozz magaddal 500 extra dollárt!';
    break;
    case 'Amszterdam':
        echo 'Légy nyitott!';
    break;              
    case 'Egyiptom':
        echo 'Hozz magaddal elegendő naptejet!';
    break;              
    case 'Tokió':
        echo 'Szükséged lesz zsebpénzre!';
    break;
}

 

Megjelenítés a böngészőben:

Ide utazol: Tokió

Szükséged lesz zsebpénzre!

Mivel a $destination változó értéke Tokió, a PHP a switch végrehajtása során azonnal rákeresett arra az esetre, amely a “Tokió” értéket tartalmazza. És mivel talált ilyet, azt a kódot írta ki, amelyet ez a szegmens tartalmaz.

Megfigyelhetted, hogy minden eset (case) tartalmaz egy break elemet a kódrészlet végén. Ez a break elem arra való, hogy megakadályozza, hogy más esetek is lefussanak. Tegyük fel, hogy a kód nem tartalmazza a break állításokat. Mi történne? Nos, a PHP lefuttatna minden olyan esetet is, amely a “Tokió” után található — ezt pedig nem szeretnénk! A break hasznos eleme a switch állításoknak, tehát fontos megjegyezni, mire való, és mi a feladata. A kezdő programozóknak azt ajánljuk, hogy mindenképp használják a break elemet, hogy elkerüljék a felesleges problémákat!

A switch állítás szerkezete elég egyedi és különleges, úgyhogy mindenképp érdemes barátkoznunk vele még egy kicsit, mielőtt továbblépnénk. Lássunk hát még egy példát:

PHP-kód:

<?php
$today = date('N');
switch ($today) {
  case 1:
    echo 'Ma hétfő van. Takaríts ki!';
    break;
  case 2:
    echo 'Ma kedd van. Vásárolj be!';
    break;
  case 3:
    echo 'Ma szerda van. Menj el fodrászhoz!';
    break;
  case 4:
    echo 'Ma csütörtök van. Mosd le a kocsit!';
    break;
  case 5:
    echo 'Ma péntek van. Menj el bulizni!';
    break;
  case 6:
  case 7:
    echo 'Hétvége van. Pihenj!';
    break;
}
?>

 

A fenti kódrészlet minden hétköznap más üzenettel várja a látogatót, viszont szombat és vasárnap ugyanaz az üzenet jelenik meg, mert a 6. nap esete nem tartalmaz kódrészletet vagy break állítást, ezért a következő eset kódrészlete is lefut. Így tudjuk több esetben is lefuttatni ugyanazt a kódrészletet.

 

Az alapeset — deafult case

Ha már megbarátkoztál az if állítások különféle típusaival, észrevehetted, hogy a fenti kódokban nincs hova beírni, mi a teendő, ha a változó nem felel meg a feltételeknek. Az if esetében ezt az else segítségével tehettük meg, a switchnél pedig a deafult eset alkalmas erre.

Általában ajánlatos a deafult, vagyis az alapesetet is beszúrni a switch állításba. Bemutatunk egy példát, melyben egyik eset sem felel meg a változónknak. Ilyenkor a deafult case lesz lefuttatva. Fontos: a kódban a case szó nem szerepel a deafult szó előtt, mert a deafult egy speciális kulcsszó!

 

PHP-kód:

$destination = 'New York';
echo 'Ide utazol: ' . $destination . '<br />';
switch ($destination) {
     case 'Las Vegas':
           echo 'Hozz magaddal 500 extra dollárt!';
           break;
     case 'Amszterdam':
           echo 'Légy nyitott!';
           break;              
     case 'Egyiptom':
           echo 'Hozz magaddal elegendő naptejet!';
           break;              
     deafult:
           echo 'Csomagolj elegendő fehérneműt!';
           break;              
}

 

Megjelenítés a böngészőben:
Ide utazol: New York
Csomagolj elegendő fehérneműt!
 

Összegzés:

Elsőre talán bonyolultnak tűnt, de reméljük, a switch sem okozott különösebb fejfájást. Gyakorold az if variációkat és a switch állítást szorgalmasan, hiszen programozói karriered során nagy szükséged lesz rájuk. Következő leckénkben a PHP egy másik területére kalandozunk el, tarts velünk!

Az oldal sütiket használ, hogy személyre szabjuk a tartalmakat és reklámokat, hogy működjenek a közösségi média funkciók, valamint hogy elemezzük a weboldal forgalmát. Bővebben a "Részletek mutatása" gombra olvashat.
Az oldal sütiket használ, hogy személyre szabja az oldalon megjelenő tartalmat és reklámokat.