Время чтения ~ 30 сек. / 38 просмотров / 0 комментариев / Январь 14, 2024, 20:58

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

Введение

Когда значение одной переменной определяется различным количеством вариантов выбора, вы можете использовать оператор if...elseif.

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

В следующем примере используется оператор if elseif для отображения различных сообщений в зависимости от роли пользователя:

<?php

$role = 'subscriber';
$message = '';

if ('admin' === $role) {
    $message = 'Добро пожаловать, admin!';
} elseif ('editor' === $role) {
    $message = 'Добро пожаловать! У вас есть несколько статей, ожидающих редактирования.';
} elseif ('author' === $role) {
    $message = 'Добро пожаловать! Хотите опубликовать черновик статьи?';
} elseif ('subscriber' === $role) {
    $message = 'Добро пожаловать! Ознакомьтесь с некоторыми новыми статьями.';
} else {
    $message = 'Простите! Вы не авторизованы для просмотра этой страницы.';
}

echo $message;

Вывод:

Добро пожаловать! Ознакомьтесь с некоторыми новыми статьями.

Когда значение одной переменной определяется различным количеством вариантов выбора, целесообразней использовать конструкцию switch, например, так:

<?php

$role = 'admin';
$message = '';

switch ($role) {
    case 'admin':
        $message = 'Добро пожаловать, admin!';
        break;
    case 'editor':
        $message = 'Добро пожаловать! У вас есть несколько статей, ожидающих редактирования.';
        break;
    case 'author':
        $message = 'Добро пожаловать! Хотите опубликовать черновик статьи?';
        break;
    case 'subscriber':
        $message = 'Добро пожаловать! Ознакомьтесь с некоторыми новыми статьями.';
        break;
    default:
        $message = 'Простите! Вы не авторизованы для просмотра этой страницы.';
}

echo $message;

Следующий код иллюстрирует синтаксис конструкции switch:

<?php

switch (выражение) {
    case value1:
        // блок кода 1
        break;
    case value2:
        // блок кода 2
        break;
    case value3:
        // блок кода 3
        break;
    default:
        // блок кода по умолчанию
}

Оператор switch сравнивает выражение со значением в каждом случае.

Если выражение равно значению в каком-то случае, например, value1, PHP выполняет блок кода в соответствующем случае до тех пор, пока не встретит первый оператор break.

Если нет совпадения, и доступен блок default, PHP выполняет все инструкции, следующие за ключевым словом default.

В случае отсутствия блока default и отсутствия совпадения управление передается оператору, следующему за конструкцией switch.

Следующая блок-схема иллюстрирует, как работает конструкция switch:

switch php

Комбинирование случаев

Поскольку PHP выполняет конструкцию switch от совпадающей метки case до тех пор, пока не встретит оператор break, вы можете объединить несколько случаев (case-ов) в один.

В следующем примере используется конструкция switch, которая объединяет случаи 'editor' и 'author':

<?php

$role = 'author';
$message = '';

switch ($role) {
    case 'admin':
        $message = 'Добро пожаловать, admin!';
        break;
    case 'editor':
    case 'author':
        $message = 'Добро пожаловать! Хотите опубликовать черновик статьи?';
        break;
    case 'subscriber':
        $message = 'Добро пожаловать! Ознакомьтесь с некоторыми новыми статьями.';
        break;
    default:
        $message = 'Простите! Вы не авторизованы для просмотра этой страницы.';
}

echo $message;

Вывод:

Добро пожаловать! Хотите опубликовать черновик статьи?

В этом примере, если роль — editor или author, будет показано одно и то же сообщение.

Альтернативный синтаксис конструкции switch в PHP

PHP также поддерживает альтернативный синтаксис конструкции switch:

<?php

switch (выражение):
    case value1:
        // блок кода 1
        break;
    case value2:
        // блок кода 2
        break;

    default:
        // блок кода по умолчанию
        break;
endswitch;

Альтернативный синтаксис подходит для смешивания с HTML-кодом.

Подытожим

  • Используйте конструкцию switch в PHP вместо серии конструкций if для одного и того же выражения.
Теги:
php
Тернарный оператор - PHP
Цикл for - PHP
Операторы присваивания - PHP
Январь 09, 2024, 22:29
В этом уроке вы узнаете о наиболее часто используемых операторах присваивания в PHP.
Привет Мир! или Hello World!
Декабрь 04, 2017, 15:07
По традиции при изучении нового языка программирования программисты пишут первую простую программу на этом языке, которая выводит на экран фразу "Hello World!" или "Привет Мир!". Следуя этой традиции в первой статье сайта будут показаны простые...
Тернарный оператор - PHP
Январь 14, 2024, 17:39
В этом уроке вы узнаете, как использовать тернарный оператор в PHP для сокращения кода и улучшения его читаемости.
Оператор НЕ (NOT) - PHP
Январь 11, 2024, 17:05
В этом уроке вы узнаете, как использовать логический оператор отрицания НЕ (NOT) (!) в PHP для создания сложных логических выражений.
Операторы сравнения - PHP
Январь 10, 2024, 17:48
В этом уроке вы узнаете, как использовать операторы сравнения в PHP для сравнения двух значений.