Переключатель 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;
?>

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

Подпишитесь, чтобы раз в неделю получать свежие статьи с блога по email.

Смотрите также

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

  • Игорь24 апреля 2013 в 13:04 #

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

    • Миша25 апреля 2013 в 12:04 #

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

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

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
  • Миша: Привет ещё раз, не поверишь, реально не сталкивался с этим вопросом. По теории можно сказать следующее: во-первых,...

  • Миша: Привет, вообще без проблем, делаешь всё через require(), require_once() - выбирай любую, какая больше нравится.

  • Виталий Моргунов: Привет! Не могу разобаться, как я могу контролировать порядок подключения стилей. В моем случае мне нужно чтобы стили...

  • Миша: Спасибо!

  • w0rmak: Это было просто. Нашел код в интернете. Добавьте и себе ymaps.load(function () { var input = document.getElem...