PHP switch: case, break и continue
- Оператор switch
- case
- break
- continue
- Выбор по умолчанию
- Дополнительные сведения
Оператор switch
Часто вместо нескольких расположенных подряд операторов if else
целесообразно воспользоваться специальной конструкцией switch-case
. Оператор switch сравнивает значение условного выражения с несколькими значениями. Как правило, в качестве выражения используется переменная, в зависимости от значения которой должен быть исполнен тот или иной блок кода. Для сравнения в switch
используется оператор равенства (==
).
Представим себе переменную $action
, которая может иметь значения "JUMP"
(прыгать), "SWEEM"
(плавать), "FLY"
(летать). Оператор switch
позволяет легко определить блок кода, который должен исполняться для каждого из этих значений.
if
и switch
, выполним проверку переменной на соответствие нескольким значениям. Следующий пример показывает два различных способа сделать то же самое. Первый способ использует серию операторов if
и elseif
, а второй — оператор switch
:<?php $action = 'JUMP'; if ($action == 'JUMP') { echo "Мне нравится прыгать."; } elseif ($action == 'SWEEM') { echo "Я люблю плавать."; } elseif ($action == 'FLY') { echo "Хотел бы я научиться летать."; } switch ($action) { case 'JUMP': echo "Мне нравится прыгать."; break; case 'SWEEM': echo "Я люблю плавать."; break; case 'FLY': echo "Хотел бы я научиться летать."; break; } ?>
Оператор switch
берет значение, возвращаемое условным выражением, и начинает сравнивать его со всеми значениями, стоящими рядом с ключевым словом case
(метка), в порядке их следования. Как только совпадение обнаружено, выполняется соответствующий блок кода. Если соответствие не найдено, не исполняется ни один из блоков.
Примечание: условное выражение должно возвращать значение элементарного типа, например число или строку.
case
Обратите внимание, что за ключевым словом case
каждый раз следует значение (литерал), после которого должно обязательно стоять двоеточие. Тип значения, указанного после оператора case
, должен совпадать с типом значения возвращаемого условием. Перед началом исполнения тела (содержимое между фигурными скобками) оператора switch
, переменная указанная в скобках, должна быть инициализирована каким-нибудь значением, поскольку это значение будет сравниваться со значениями, указанными после case. Инструкции, расположенные после case
, будут исполняться до тех пор, пока не встретится оператор break
.
Примечание: в операторе case
может быть использовано любое выражение, которое приводится к простому типу, то есть к числу (integer
), вещественному числу (float
), строке (string
) или логическому значению (bool
).
break
Если должен быть выполнен только один блок кода, соответствующий определенному значению, то в конце этого блока следует вставить ключевое слово break
. Интерпретатор PHP, встретив ключевое слово break
, завершает работу оператора switch
и переходит к исполнению инструкции, расположенной после закрывающей фигурной скобки оператора switch
.
Конструкции case
в операторе switch
задают только начальную точку выполняемого программного кода, но не задают никаких конечных точек. В случае отсутствия ключевого слова
, оператор switch
начнёт выполнение блока кода с метки (case
), значение которой соответствует значению условного выражения, и продолжит выполнение инструкций до тех пор, пока не дойдет до конца всего блока. Поэтому стоит быть аккуратнее и не забывать завершать каждый блок case
оператором break
. В следующем примере показано, что происходит при отсутствии ключевого слова break
:
<?php $action = 'JUMP'; switch ($action) { case 'JUMP': echo "Мне нравится прыгать.<br>"; case 'SWEEM': echo "Я люблю плавать.<br>"; case 'FLY': echo "Хотел бы я научиться летать.<br>"; } ?>
В результате работы скрипта, будут выведены все три записи. Однако иногда бывает полезным опускать намеренно оператор break, например в таких случаях, когда при совпадении одного из нескольких значений, должен исполняться один блок кода:
<?php $a1 = 2; switch ($a1) { case 1: case 2: case 3: echo "\$a1 равно 1, 2 или 3"; break; case 6: echo "\$a1 равно 6"; break; } ?>
Обратите внимание на этот пример: список инструкций для выполнения в секции case
может быть пустым, в этом случае управление просто передается далее по списку — следующему оператору case
.
continue
Обратите внимание: оператор continue
применяется в конструкциях switch
и действует подобно оператору break
.
<?php $a1 = 2; switch ($a1) { case 1: case 2: case 3: echo "\$a1 равно 1, 2 или 3"; continue; case 6: echo "\$a1 равно 6"; continue; } ?>
Выбор по умолчанию
Если значение условного выражения не совпало ни с одним из предложенных значений в секциях case, оператор switch
позволяет выполнить некоторые действия по умолчанию. Для этого используется ключевое слово default
. Работает оно следующим образом: если значение возвращаемое условием не совпало ни с одним из предложенных значений в секциях case, оператор
начинает выполнение инструкций расположенных в секции default
.
<?php $action = 5; switch ($action) { case 'JUMP': echo "Мне нравится прыгать.<br>"; case 'SWEEM': echo "Я люблю плавать.<br>"; case 'FLY': echo "Хотел бы я научиться летать.<br>"; default: echo 'Что-то мне вообще лень, что-либо делать.'; } ?>
Оператор default
обычно указывается в конце тела switch
, после всех меток (case
). Это логичное и обычное место для него, но на самом деле, оператор default
может быть расположен в любом месте внутри конструкции switch
. Так как блок кода расположенный в секции default
обычно является последним в теле switch
, ключевое слово break
чаще всего опускают.
Дополнительные сведения
Возможно у вас возник вопрос когда же лучше использовать оператор switch
, если тоже самое можно сделать используя оператор if else
? Ответить на этот вопрос можно так: в операторе
выражение вычисляется всего один раз и этот результат сравнивается с каждым значением оператора case. В условных выражениях elseif
, значение выражения вычисляется каждый раз заново. Если ваше условие более сложное, чем простое сравнение и/или находится к примеру в цикле, в этом случае конструкция switch
может работать быстрее, чем elseif
.
На последок хотелось бы упомянуть о том, что вместо двоеточия после операторов
и default
, можно использовать точку с запятой:
<?php $juice = 'Яблочный'; switch ($juice) { case 'Яблочный'; case 'Апельсиновый'; case 'Банановый'; echo 'Хороший выбор'; break; default; echo 'Я не определился с соком.'; break; } ?>
С этой темой смотрят:
- if else
- Тернарный оператор
- Альтернативный синтаксис
switch | Руководство по PHP
Вернуться к: Управляющие конструкции
(PHP 4, PHP 5, PHP 7)
Оператор switch подобен серии операторов IF с одинаковым условием.
Замечание: Обратите внимание, что в отличие от некоторых других языков, оператор continue применяется в конструкциях switch и действует подобно оператору break. Если у вас конструкция switch находится внутри цикла, и вам необходимо перейти к следующей итерации цикла, используйте
continue 2.
Замечание:
Заметьте, что конструкция swich/case использует неточное сравнение (==).
Следующие два примера иллюстрируют два различных способа написать то же самое. Один использует серию операторов if и elseif, а другой — оператор switch:
Пример #1 Оператор switch
switch ($i) { <?php
if ($i == 0) {
echo "i равно 0";
} elseif ($i == 1) {
echo "i равно 1";
} elseif ($i == 2) {
echo "i равно 2";
}
case 0:
echo "i равно 0";
break;
case 1:
echo "i равно 1";
break;
case 2:
echo "i равно 2";
break;
}
?>
Пример #2 Оператор switch допускает сравнение со строками
<?php
switch ($i) {
case "яблоко":
echo "i это яблоко";
break;
case "шоколадка":
echo "i это шоколадка";
break;
case "пирог":
echo "i это пирог";
break;
}
?>
Важно понять, как оператор switch выполняется, чтобы избежать ошибок. Оператор switch исполняет строчка за строчкой (на самом деле выражение за выражением). В начале никакой код не исполняется. Только в случае нахождения оператора case, значение которого совпадает со значением выражения в операторе switch, PHP начинает исполнять операторы. PHP продолжает исполнять операторы до конца блока switch либо до тех пор, пока не встретит оператор break. Если вы не напишете оператор break в конце секции case, PHP будет продолжать исполнять команды следующей секции case. Например :
В этом примере, если $i равно 0, то PHP исполнит все операторы echo! Если $i равно 1, PHP исполнит два последних оператора echo. Вы получите ожидаемое поведение оператора (‘i равно 2’ будет отображено) только, если $i будет равно 2. Таким образом, важно не забывать об операторах break (даже если вы, возможно, хотите избежать его использования по назначению при определенных обстоятельствах).
В операторе switch выражение вычисляется один раз и этот результат сравнивается с каждым оператором case. В выражении elseif, выражение вычисляется снова. Если ваше условие более сложное, чем простое сравнение и/или находится в цикле, конструкция switch может работать быстрее.
Список операторов для исполнения в секции case также может быть пустым, что просто передает управление списку операторов в следующей секции case.
Специальный вид конструкции case — default. Сюда управление попадает тогда, когда не сработал ни один из других операторов case. Например:
Выражением в операторе case может быть любое выражение, которое приводится в простой тип, то есть в тип integer, или в тип с плавающей точкой (float), или строку. Массивы или объекты не могут быть здесь использованы до тех пор, пока они не будут разыменованы до простого типа.
Возможен альтернативный синтаксис для управляющей структуры switch. Для более детальной информации, см. Альтернативный синтаксис для управляющих структур.
Возможно использование точки с запятой вместо двоеточия после оператора case. К примеру :
Вернуться к: Управляющие конструкции
ОператорPHP switch
❮ Предыдущий Далее ❯
Оператор switch
используется для выполнения различных действий в зависимости от различных условий.
Оператор PHP switch
Используйте оператор switch
для , выберите один из множества блоков
кода для выполнения .
Синтаксис
переключатель ( n )
{
case label1:
код, который будет выполнен, если n=label1;
перерыв;
case label2:
код, который будет выполнен, если n=label2;
перерыв;
case label3:
код, который будет выполнен, если n=label3;
перерыв;
…
по умолчанию:
код, который будет выполнен, если n отличается от всех меток;
}
Вот как это работает: Сначала у нас есть одно выражение n (чаще всего это
переменная), которая оценивается один раз. Затем значение выражения сравнивается
со значениями для каждого случая в структуре. Если есть совпадение, блок
кода, связанного с этим случаем, выполняется. Используйте сломать
, чтобы предотвратить
код от запуска в следующий случай автоматически. Оператор по умолчанию
используется, если нет
совпадение найдено.
Пример
$favcolor = «красный»;
переключатель ($favcolor)
{
case «red»:
echo «Ваш любимый цвет — красный!»;
перерыв;
case «blue»:
echo «Ваш любимый цвет синий!»;
перерыв;
case «green»:
echo «Ваш любимый цвет — зеленый!»;
перерыв;
по умолчанию:
echo «Ваш любимый цвет не красный, синий и зеленый!»;
}
?>
Попробуйте сами »
PHP-упражнения
Проверьте себя с помощью упражнений
Упражнение:
Создайте оператор switch
, который будет выводить «Hello»
if $color
«красный» и «добро пожаловать»
если $цвет
«зеленый».
($ цвет) { "красный": эхо "Привет"; перерыв; "зеленый": эхо «Добро пожаловать»; перерыв; }
❮ Предыдущий Следующий ❯
ВЫБОР ЦВЕТА
Лучшие учебники
Учебник по HTMLУчебник по CSS
Учебник по JavaScript
Учебник How To
Учебник по SQL
Учебник по Python
Учебник по W3.CSS
Учебник по Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery
3 900 Справочник
Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery
Основные примеры
Примеры HTMLПримеры CSS
Примеры JavaScript
Примеры How To Примеры
Примеры SQL
Примеры Python
Примеры W3. CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery
| О
W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.
Copyright 1999-2023 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.
Основные советы по случаю переключения PHP: изучите оператор PHP Switch
Мы узнали, как работает оператор PHP if. Теперь мы познакомимся с оператором case switch в PHP. Оба они считаются условными операторами, которые позволяют разработчикам подготавливать части кода для различных результатов.
Используя оператор PHP switch, разработчики могут указать блоки кода, которые будут выполняться в различных случаях. Давайте рассмотрим правила синтаксиса и пример кода, чтобы лучше понять, как правильно использовать оператор PHP switch case.
Содержание
- 1. Случай переключателя PHP: основные советы
- 2. Синтаксис инструкции
- 3. Практика: пример кода
- 4. Случай переключателя PHP: сводка
Случай переключателя PHP: основные советы используется для выполнения разных блоков кода для разных случаев.
Когда разработчикам необходимо использовать оператор switch
PHP, они должны убедиться, что соблюдают правила синтаксиса. Посмотрите схему ниже. Вы можете четко видеть, какой блок кода должен быть выполнен в каждом случае PHP switch
. Для вашего удобства мы даем подробное объяснение, чтобы даже новички могли понять:
switch (x) {
case name1:
код для запуска, если x=name1;
перерыв;
case name2:
код для запуска, если x=name2;
перерыв;
case name3: код
для запуска, если x=name3;
перерыв;
. ..
по умолчанию:
код для запуска, если x не соответствует ни одному из указанных имен;
}
Pros
- Simplistic design (no unnecessary information)
- High-quality courses (even the free ones)
- Variety of features
Main Features
- Nanodegree programs
- Suitable для предприятий
- Paid certificates of completion
EXCLUSIVE: 75% OFF
Pros
- Easy to navigate
- No technical issues
- Seems to care about its users
Main Features
- Huge variety of курсы
- 30-дневная политика возврата средств
- Бесплатные сертификаты об окончании
ОТ 12,99$
Pros
- Отличный пользовательский опыт
- предлагает качественное содержание
- Очень прозрачно с их ценами
Основные функции
- БЕСПЛАТНЫЙ СЕРТИКАТЫ
- ФОКС 9017.