home 2024. április 19., Emma napja
Online előfizetés
A PHP switch állítása
Erdsoft
2019.04.13.
LXXIV. évf. 15. szám
A PHP switch állítása

Előző leckéinkben lefedtük azokat az elemeket, amelyek a PHP if állításához kapcsolódnak. Vannak azonban olyan helyzetek, mikor az if és annak formái egyszerűen nem elég hatékonyak.

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!

 


 

NYEREMÉNYJÁTÉK!

Rovatunk elsődleges célja, hogy közelebbről is bemutassa a legismertebb webtechnológiákat. Azok között az olvasók között, akik minden héten követik rovatunkat, azaz velünk tanulják a programozás alapjait és kitöltik a feladatsort, a sorozat végén egy laptopot sorsolunk ki.

A játék heti kérdése:

Mikor fut le a switch default állításában levő kódrészlet?
1. Ha nincs megadva olyan eset, amelynek az értéke megegyezik a bemeneti értékkel.
2. Minden esetben.
3. Ha a bemenő változó értéke megegyezik a default szöveggel.

 
A választ a tanulok@erdsoft.com e-mail-címre kell elküldeni, a tárgysorba pedig
a következőt kell beírni: HÉTNAP-TANULOK. Sok szerencsét!

 


 

Néhány szó rólunk:

Az ErdSoft (www.erdsoft.com) 2011-ben alakult meg. Csapatunkat a fiatalos lendület, a szakértelem, a folyamatos tanulás és tapasztalatgyűjtés jellemzi. Ügyfeleinknek igyekszünk teljes körű szolgáltatást nyújtani — bátran fordulhatnak hozzánk, legyen szó webfejlesztésről, alkalmazásokról, SEO-optimalizálásról, grafikai tervezésről, marketingről vagy szövegírásról. Csapatunk sikerét mi sem bizonyítja jobban, mint a több száz elkészült weboldal és a számos elégedett ügyfél Szerbiában, Magyarországon és az Egyesült Királyságban.

Hozzászólások
Hozzászólások
0
Hozzászólás küldése
1000 karakter áll rendelkezésére
A megjegyzésekben kifejtett vélemények a hozzászólások szerzőinek magánvéleményei, és nem tükrözik az internetes portál véleményét. A megjegyzéseket moderáljuk és jóváhagyjuk az általános szerződési feltételeknek megfelelően.
Támogatóink
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 "Beállítások" gombra kattintva olvashat.
Az oldal sütiket használ, hogy személyre szabja az oldalon megjelenő tartalmat és reklámokat..