Время чтения ~ 30 сек. / 76 просмотров / 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
Декабрь 27, 2023, 22:33
В этом уроке вы узнаете, как выполнить сценарий, который выводит сообщение "Привет, Мир!" в веб-браузере и в командной строке.
Конструкция if - PHP
Январь 12, 2024, 16:50
В этом уроке вы узнаете о конструкции if в PHP и о том, как использовать её для выполнения блока кода при условии.
Оператор ИЛИ (OR) - PHP
Январь 11, 2024, 13:37
В этом уроке вы узнаете о логическом операторе ИЛИ (OR) (||) в PHP и о том, как его использовать для создания сложных логических выражений.
Константы в PHP
Декабрь 31, 2023, 12:52
В этом уроке вы узнаете о константах в PHP и о том, как использовать функцию define() и ключевое слово const для определения констант.
PHP Учебник
Декабрь 23, 2023, 16:37
Это руководство по PHP поможет вам научиться разрабатывать динамические веб-сайты и веб-приложения с использованием PHP с нуля.