Kursy mojej produkcji
<?php
$a = 3;
if($a == 1)
{
echo 'Raz';
}
else if($a == 2)
{
echo 'Dwa';
}
else if($a == 3)
{
echo 'Trzy';
}
else if($a == 4)
{
echo 'Cztery';
}
?>
Powyższy kod można także przedstawić w inny sposób przy pomocy omawianej instrukcji.
<?php
$a = 3;
switch($a)
{
case 1:
echo 'Raz';
break;
case 2:
echo 'Dwa';
break;
case 3:
echo 'Trzy';
break;
case 4:
echo 'Cztery';
break;
}
?>
Po napotkaniu pasującej wartości dalsza część konstrukcji nie jest przerabiana przez parser. Zacznijmy od początku. Do switch() przekazujemy zmienną zwaną dalej parametrem i następnie porównujemy jej zawartość z zapisanymi opcjami, gdy w case zostanie napotkana właściwa wartość wtedy wykonuje się kod zawarty poniżej warunku. Ów kod wykonuje się do momentu napotkania break czyli przerwania bądź zakończenia instrukcji switch. Oznacza to w rezultacie, że w ostatnim przypadku (warunku) przed zakończeniem switch czyli znakiem } nie musi wystąpić break.
<?php
$a = 4;
switch($a)
{
case 1:
case 3:
case 5:
case 7:
case 9:
echo 'Cyfra jest nieparzysta';
break;
case 0: // Zależnie od teorii zero jest bądź nie jest parzyste
case 2:
case 4:
case 6:
case 8:
echo 'Cyfra jest parzysta';
break;
}
?>
Oczywiście pisanie takich warunków w nieskończoność jest głupie dlatego też jeżeli chcesz sprawdzić parzystość bądź nieparzystość podanej liczby musisz wykorzystać prostszy mechanizm. Najprostsze rozwiązanie sprawdzania parzystości poznamy w następnej części kursu, która będzie omawiać operator trójkowy.
<?php
$a = 3;
if($a == 1)
{
echo 'Jeden';
}
else if($a == 2)
{
echo 'Dwa';
}
else
{
echo 'Inna liczba';
}
?>
W takim przypadku dla instrukcji switch przykład będzie wyglądał tak:
<?php
$a = 3;
switch($a)
{
case 1:
echo 'Jeden';
break;
case 2:
echo 'Dwa';
break;
default:
echo 'Inna liczba';
break;
}
?>
Jak widzimy zostało zastosowane wyrażenie default oznaczające domyślną czynność jeżeli żadna z poprzednich nie została wykonana. Oczywiście tak jak wcześniej mówiłem ostatni break nie musi zostać umiejscowiony.
<?php
$a = '1';
switch($a)
{
case 1:
echo 'Raz';
break;
case 2:
echo 'Dwa';
break;
default:
echo 'Coś innego';
break;
}
?>
<?php
$a = 6;
switch($a)
{
case (!empty($a) && $a > 5):
echo 'Pierwszy warunek spełniony';
break;
case $a < 5:
echo 'Drugi warunek spełniony';
break;
}
?>
<?php
$a = 1;
switch($a):
case 1:
echo 'Raz';
break;
case 2:
echo 'Dwa';
break;
endswitch;
?>
Powyższy zapis jest bardzo rzadko spotykany.