poniedziałek,
Instrukcja switch
Instrukcja wyboru switch pozwala na wygodny wybór instrukcji do wykonania spośród wielu opcji. Podobny efekt można osiągnąć stosując kilka instrukcji if oraz jej odmiany, jednak w takim przypadku kod aplikacji będzie mniej przejrzysty. Instrukcja switch jest dostępna w wielu językach programowania, jednak mogą wystąpić pewne różnice w składni i sposobie działania. Prezentowane przykłady dotyczą języka PHP. Pierwszy przykład to emulator automatu do kawy. Wybór opcji następuje na podstawie wartości zmiennej $x, po słowach kluczowych case określono opcje. Jeśli dopasowanie się powiedzie, wykonywane są instrukcje umieszczone pomiędzy case… i break.
<?php
$x = 3;
switch ($x) {
case 1:
$napoj = 'Espresso';
break;
case 2:
$napoj = 'Kawa duża';
break;
case 3:
$napoj = 'Cappuccino';
break;
case 4:
$napoj = 'Espresso z mlekiem';
break;
}
echo 'Wybrano: ' . $napoj; // wyświetli tekst "Cappuccino"
?>
W instrukcji switch można za pomocą słowa kluczowego default zamieścić opcję domyślną, która wykona się, jeśli dopasowanie będzie nieudane. Przykład to kod ustalający na podstawie żądania właściwy tytuł strony internetowej. W przypadku zażądania zasobu, który nie został zdefiniowany, zostanie wybrana opcja „Błąd 404”.
<?php
$request = 'galeria';
switch ($request) {
case 'start':
$title = 'Witamy na naszej stronie';
break;
case 'kontakt':
$title = 'Nasze dane kontaktowe';
break;
case 'galeria':
$title = 'Galeria zdjęć';
break;
default:
$title = 'Błąd 404';
}
echo $title;
?>
Słowo kluczowe break w instrukcji switch jest opcjonalne, czasami można to wykorzystać. Poniższy kod po wybraniu dowolnego uwzględnionego zawodu zawsze wyświetli tekst „Dobry wybór!”, przy braku dopasowania komunikat otrzyma treść „Dokonaj wyboru”.
<?php
$zawod = 'technik reklamy';
switch ($zawod) {
case 'technik informatyk':
case 'technik reklamy':
case 'technik mechanik':
echo 'Dobry wybór!'
break;
default:
echo 'Dokonaj wyboru';
}
?>
Pomiędzy case… i break może znaleźć się wiele instrukcji. W poniższym kodzie dzieje się tak w przypadku operacji dzielenia.
<?php
$a = 3;
$b = 4;
$operacja = 'dzielenie';
switch ($operacja) {
case 'dodawanie':
$wynik = $a + $b;
break;
case 'odejmowanie':
$wynik = $a - $b;
break;
case 'mnożenie':
$wynik = $a * $b;
break;
case 'dzielenie':
if($b != 0) {
$wynik = $a / $b;
} else {
$wynik = 'Błędne dane';
}
break;
default:
$wynik = 'Błędna operacja';
}
echo $wynik;
?>
Mniej znaną własnością instrukcji switch jest możliwość stosowania wyrażeń warunkowych.
<?php
$x = 3;
switch (true) {
case ($x > 0):
echo 'dodatnia';
break;
case ($x < 0):
echo 'ujemna';
break;
case ($x == 0):
echo 'zero';
break;
}
// wyswietli tekst "dodatnia"
?>