Переключатель Switch

switch полезен в качестве замены нескольким if в том случае, если используется одна и та же переменная. Для того, чтобы было понятнее, покажу на примере. Предположим, у нас есть вот такой код:

<?php
if ($my_number == 0) {
	echo '$my_number равно нулю';
} elseif ($my_number == 1) {
	echo '$my_number равно одному';
} elseif ($my_number == 2) {
	echo '$my_number равно двум';
}
?>

А вот как он будет выглядеть с использованием switch:

<?php
switch ($my_number) {
	case 0:
		echo '$my_number равно нулю';
		break;
	case 1:
		echo '$my_number равно одному';
		break;
	case 2:
		echo '$my_number равно двум';
		break;
}
?>

В случае нахождения совпадения, функция не будет продолжать сравнивать значения — для этого и нужен break в конце.

Точно такой же пример, но теперь вместо числовых значений возьмём строковые:

<?php
switch ($my_car) {
	case 'Ford Mustang':
		echo 'Моя тачка - Ford Mustang';
		break;
	case 'Chevrolet Camaro':
		echo 'Я катаюсь на Camaro';
		break;
	case 'Lamborghini Gallardo':
		echo 'У меня в гараже новенький Gallardo';
		break;
}
?>

Можно объединить несколько значений переменных следующим образом:

<?php
switch ($my_cms) {
	case 'Wordpress':
		echo 'При создании сайтов я использую WordPress';
		break;
	case 'Joomla': // аналог if($a==1 || $a==2)
	case 'Drupal':
		echo 'Я предпочитаю другие, менее популярные CMS';
		break;
}
?>

В следующем примере используем альтернативный синтаксис, а также добавим действие по умолчанию, которое будет выполняться в том случае, если ни одно из значений не совпадет (аналог else).

<?php
switch ($my_cms) :
	case 'Wordpress':
		echo 'При создании сайтов я использую WordPress';
		break;
	case 'Joomla':
	case 'Drupal':
		echo 'Я предпочитаю другие, менее популярные CMS';
		break;
	default:
		echo 'Я делаю сайты на самописных движках';
endswitch;
?>

Также хочу отметить, что вместо двоеточия можно спокойно юзать точку с запятой (только поосторожнее с последним примером).

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии 2

  • Игорь 24 апреля 2013 #

    Пример с аналогом else не работает, постоянно выдает синтаксическая ошибка

    • Миша 25 апреля 2013 #

      протестировал, похоже, что все ок, ну можно попробовать заменить endswitch на фигурные скобки

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, в случае несоблюдения этого условия в 99% случаях ваш коммент будет удалён, а автор заблокирован. Печалька.