30 dniowy kurs php – dzień 8 – switch


Back-end (php, mysql)

Deklaracja switch to w zasadzie brat bliźniak deklaracji if/else. Kiedy więc używać switch a kiedy if/else?

Jeśli tworzysz bardzo rozbudowany skrypt, gdzie dla jednej deklaracji masz dziesiątki możliwych warunków do spełnienia wtedy definitywnie lepiej używać switch. Jest to po prostu bardziej wydajna metoda biorąc pod uwagę czas wykonywania skryptu. Jeśli jednak nie tworzysz aktualnie wielkiego projektu odpowiedź jest prosta. Używaj tego typu deklaracji, który jest dla Ciebie wygodniejszy.

Konstrukcja switch

<?php

$warunek = 'warunek 1';

switch($warunek)
{
	case 'warunek 1':
		echo 'wykonano warunek 1';
		break;
	case 'warunek 2':
		echo 'wykonano warunek 2';
		break;
	default:
		echo 'żaden warunek nie spełniony';
}

?>

Obrazowy przykład

Zamiast suchych danych podstawimy teraz nieco bardziej rozbudzające wyobraźnie. Ułatwi Ci to na pewno zrozumienie konstrukcji switch.

<?php

$owoc = 'pomarańcza';

switch ($owoc)
{
    case 'jabłko':
        echo "wybrany owoc to jabłko";
        break;
    case 'pomarańcza':
        echo 'wybrany owoc to pomarańcza';
        break;
    case 'arbuz':
        echo 'wybrany owoc to arbuz';
        break;
	default:
		echo 'owoc niedostępny';
}		

?>

Porównanie if/else z switch

Dwie konstrukcje logiczne napisane przy użyciu dwóch deklaracji if oraz switch. Obie działają identycznie. Od Ciebie zależy, której deklaracji będziesz używał w swoich skryptach.

<?php

$i = 1;

if ($i == 0)
{
    echo 'i równa się 0';
}
elseif ($i == 1)
{
	echo 'i równa się 1';
}
elseif ($i == 2)
{
    echo 'i równa się 2';
}
else
{
	echo 'i jest inne niż 0, 1 lub 2';
}

echo '<br/>';

switch ($i)
{
    case 0:
        echo 'i równa się 0';
        break;
    case 1:
        echo 'i równa się 1';
        break;
    case 2:
        echo 'i równa się 2';
        break;
	default:
		echo 'i jest inne niż 0, 1 lub 2';
}

?>

Spróbuj pozmieniać wartości zmiennych aby sprawdzić jak działa wykonywanie poszczególnych deklaracji. Break uniemożliwia automatyczne przeskoczenie w wykonywaniu kolejnego warunku gdy jeden z nich został już spełniony. Poeksperymentuj. Zobacz co się stanie gdy usuniesz wszystkie wpisy break. W ten sposób na pewno zrozumiesz sens wstawiania go do konstrukcji switch.

Podsumowanie

Konstrukcja switch wydaje się być nieco bardziej czytelna w porównaniu do if, aczkolwiek jak już wcześniej wspominałem używaj tego rozwiązania, które wydaje Ci się wygodniejsze.