Время чтения ~ 30 сек. / 58 просмотров / 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
Жонглирование типами (type juggling) - PHP
Январь 09, 2024, 11:20
В этом уроке вы узнаете о жонглировании типами (type juggling) в PHP и о том, как оно работает.
Конструкция if elseif - PHP
Январь 13, 2024, 18:40
В этом уроке вы узнаете о конструкции if elseif в PHP, которая позволяет выполнять блоки кода в зависимости от нескольких логических выражений.
Операторы сравнения - PHP
Январь 10, 2024, 17:48
В этом уроке вы узнаете, как использовать операторы сравнения в PHP для сравнения двух значений.
Оператор ИЛИ (OR) - PHP
Январь 11, 2024, 13:37
В этом уроке вы узнаете о логическом операторе ИЛИ (OR) (||) в PHP и о том, как его использовать для создания сложных логических выражений.
Язык разметки Markdown с примерами
Декабрь 18, 2023, 20:55
Примеры использования языка разметки Markdown.