Какие функции выполняет оператор Switch/Case в PHP?

какие функции выполняет оператор switch/case в php?

Использование оператора switch

Оператор выбора switch по принципу своей работы во многом схож с условным оператором if. Он предназначен для выполнения альтернативных действий при совпадении определенных условий. Но у оператора switch имеется ряд существенных отличий в синтаксисе и поведении, которые делают его идеальным для использования там, где существует большое кол-во альтернативных действий. В таких ситуациях он может работать быстрее, чем условный оператор и упростит визуальное восприятие программного кода.

Ниже мы приводим пример использования оператора switch в PHP, а сразу за ним даем подробный разбор синтаксических правил и объясняем принцип его работы.

//Определяем переменную содержащую строку
$myFavoriteName = 'Наталья';

//Используем переменную как входящий параметр
//для оператора switch
switch($myFavoriteName){
    case 'Ольга':
        echo 'Определенно. Ольга мое любимое имя';
        break;
    case 'Наталья':
        echo 'Наталья - это самое лучшее имя!';
        break;
}
//Результат: Наталья - это самое лучшее имя!

Правила использования оператора выбора:

  1. Конструкция начинается с ключевого слова switch, за которым следует определение входящего параметра.
  2. Определение входящего параметра располагается внутри круглых скобок. В него вы можете передать значения только простого типа (строка, целое число, дробное число).
  3. После определения параметра располагаются фигурные скобки, между которыми будет составлено тело оператора.
  4. Для проведения одного сравнения, в теле оператора необходимо указать ключевое слово case. Затем, через пробел, значение с которым будет сравниваться входящий параметр и двоеточие.
  5. В случае совпадения указанного значения в case с входящим параметром, будет выполнен весь программный код, расположенный до ключевого слова break или до закрывающей фигурной скобки, если break не указан.
  6. Входящий параметр будет сравниваться с каждым блоком case пока не найдет совпадение или не достигнет конца.

Заметка
Так как оператор выбора во входящем значении может принимать только простые типы данных (строка, целое число, дробное число), то на его использование накладываются серьезные ограничения. В кругах программистов ведутся споры о том, нужен ли вообще switch в PHP. Мы не будем принимать ни одну из сторон. По-настоящему профессиональный программист должен знать и уметь использовать весь представленный функционал. Отметим лишь то, что пример, приведенный выше, можно составить и с помощью условного оператора.

//Определяем переменную содержащую строку
$myFavoriteName = 'Наталья';

//Использование условного оператора вместо "switch/case"
if($myFavoriteName == 'Ольга') {
    echo 'Определенно Ольга мое любимое имя';
} elseif($myFavoriteName === 'Наталья') {
    echo 'Наталья - это самое лучшее имя!';
}
//Результат: Наталья - это самое лучшее имя!

Ключевое слово break

Мы уже поняли, что указание ключевого слова break является своего рода ограничителем. При совпадении входящего параметра со значением, заданным в блоке case, и выполнении кода расположенного внутри него, break заставляет интерпретатор PHP выйти из текущего оператора switch.

С этим связана одна особенность поведения оператора выбора switch. Если у какого либо блока case не задан ограничитель, то при совпадении будет выполнен не только код, присутствующий в данном case, но и лежащий в других блоках под ним. Выполнение кода будет происходить до тех пор, пока не будет найдено ключевое слово break, или не наступит конец оператора.

//Заводим переменную содержащую строку
$userName = 'User';

//Значение переменной совпадает с первым блоком
//case, но в нем отсутствует ключевое слово break
switch($userName){
    case 'User':
        echo 'Добро пожаловать, пользователь!<br>';
    case 'Admin':
        echo 'Добро пожаловать, администратор!<br>';
        break;
    case 'Manager':
        echo 'Здравствуйте, менеджер<br>';
        break;
}
/*
* Результат:
* Добро пожаловать, пользователь!
* Добро пожаловать, администратор!
*/

Указание блока default

Как и в условном операторе, мы можем указать, какие действия предпринять, если в процессе сравнения не было выявлено совпадений ни с одним блоком case. Для реализации такого поведения существует ключевое слово default. Его функции схожи с case. Разница лишь в том, что при использовании default блока не нужно указывать значение для сравнения с входящим параметром, и располагаться он должен последним.

//Заводим переменную с целочисленным значением
$playerAction = 125;

//Передаем нашу переменную в оператор switch
//где ни один блок case ей не соответствует
switch($playerAction){
    case 100:
        echo 'Бежать вперед';
        break;
    case 110:
        echo 'Прыгать на месте';
        break;
    default:
        echo 'Ничего не делать';
}
//Результат: Ничего не делать

Последние публикации