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
задают только начальную точку выполняемого программного кода, но не задают никаких конечных точек. В случае отсутствия ключевого слова break
, оператор
начнёт выполнение блока кода с метки (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, оператор switch
начинает выполнение инструкций расположенных в секции 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
? Ответить на этот вопрос можно так: в операторе switch
выражение вычисляется всего один раз и этот результат сравнивается с каждым значением оператора case. В условных выражениях elseif
switch
может работать быстрее, чем elseif
.На последок хотелось бы упомянуть о том, что вместо двоеточия после операторов case
и default
, можно использовать точку с запятой:
<?php $juice = 'Яблочный'; switch ($juice) { case 'Яблочный'; case 'Апельсиновый'; case 'Банановый'; echo 'Хороший выбор'; break; default; echo 'Я не определился с соком.'; break; } ?>
С этой темой смотрят:
- if else
- Тернарный оператор
- Альтернативный синтаксис
PHP | Конструкции switch и match
Последнее обновление: 07.03.2021
Конструкция switch.
.caseКонструкция switch..case
является альтернативой использованию конструкции if..elseif..else
.
Оператор switch получает некоторое выражение и сравнивает его с набором значений:
switch (выражение){ case значение1: действия; break; case значение2: действия; break; //........................... case значениеN: действия; break; }
После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после операторов сase. И если совпадение будет найдено, то будет выполняться определенный блок сase.
Конструкция switch может содержать произвольное количество операторов case. В конце блока сase ставится оператор break, чтобы избежать выполнения других блоков.
Весь блок switch помещается в фигурные скобкиб однако блок каждого отдельного оператора case НЕ помещается в фигурные скобки.
Например, возьмем следующую конструкцию if. .elseif..else
:
$a = 3; if($a==1) echo "сложение"; elseif($a==2) echo "вычитание"; elseif($a==3) echo "умножение"; elseif($a==4) echo "деление";
Теперь перепишем ее с помощь конструкции switch..case
:
$a = 3; switch($a) { case 1: echo "сложение"; break; case 2: echo "вычитание"; break; case 3: echo "умножение"; break; case 4: echo "деление"; break; }
То есть на вход в конструкцию switch передается переменная $a, и ее значение последовательно сравнивается со значениями,
указанными после операторов
case
. Так, в данном случае переменная $a
равна 3, поэтому выполнение дойдет до блока
case 3: echo "умножение"; break;
и этот блок и будет выполняться.
Если мы хотим также обработать ситуацию, когда совпадения не будет найдено, то можно добавить блок default:
$a = 3; switch($a) { case 1: echo "сложение"; break; case 2: echo "вычитание"; break; default: echo "действие по умолчанию"; break; }
Конструкция switch. .case
также поддерживает альтернативный синтаксис, при котором вместо открывающей блок фигурной скобки
ставится двоеточие, а вместо закрывающей фигурной скобки — ключевое слово endswitch:
$a = 3; switch($a): case 1: echo "сложение"; break; case 2: echo "вычитание"; break; default: echo "действие по умолчанию"; break; endswitch
match
Начиная с версии 8.0 в PHP была добавлена поддержка другой, похожей конструкции — match. Она позволяет оптимизировать
конструкцию switch
. Конструкция match также принимает некоторое выражение и сравнивает его с набором значений.
Например, пусть у нас есть следующий код:
$a = 2; switch($a) { case 1: $operation = "сложение"; break; case 2: $operation = "вычитание"; break; default: $operation = "действие по умолчанию"; break; } echo $operation;
Перепишем этот пример с использованием match:
$a = 2; $operation = match($a) { 1 => "сложение", 2 => "вычитание", default => "действие по умолчанию", }; echo $operation;
Итак, match
в скобках также принимает некоторое сравниваемое выражение (в данном случае это переменная $a). Сам блок кода match
также обертывается в фигурные скобки, однако в конце после закрывающей фигурной скобки необходимо поставить точку с запятой.
А вместо операторов case
просто указываются значения, с которыми сравнивается выражение.
Но в отличие от switch
, конструкция match возвращает некоторый результат.
Поэтому после каждого сравнимого значения ставится оператор =>, после которого идет возвращаемый результат.
То есть в данном случае переменная $a
равна 2, поэтому в конструкции match будет выполнять блок
2 => "вычитание",
Этот блок установит в качестве возвращаемого результата строку "вычитание"
.
Поскольку конструкция match возвращает результат, то этот результат мы можем присвоить другой переменной:
$operation = match($a){ //................. }
В итоге в переменной $operation
будет храниться строка "вычитание"
.
Также мы можем переписать предыдущий пример следующим образом:
$a = 2; match($a) { 1 => $operation = "сложение", 2 => $operation = "вычитание", default => $operation = "действие по умолчанию", }; echo $operation;
Сравнение значений и типов
Стоит отметить важное отличие конструкции switch от match: switch сравнивает только значение, но не учитывает тип выражения. Тогда как match также учитывает тип сравниваемого выражения. Рассмотрим разницу на примере. Пусть есть следующая конструкция switch:
switch (8.0) { case "8.0": $result = "строка"; break; case 8.0: $result = "число"; break; } echo $result; // строка
В конструкцию switch передается в качестве выажения число 8.0, но с точки зрения внутренней логики конструкции switch это выражение также соответствует строке «8.0». Поэтому в данном случае будет выполняться блок
case "8.0": $result = "строка"; break;
Теперь посмотрим, что будет в аналогичном примере с match:
match (8.0) { "8.0" => $result = "строка", 8.0 => $result = "число" }; echo $result; // число
Конструкция match также будет учитывать тип выражения, а тип в данном случае float, поэтому будет выполняься блок:
8.0 => $result = "число"
НазадСодержаниеВперед
Примеры switch case в PHP
Конструкция switch-case очень похожа на условный оператор if-else, но имеет свои особенности. Целесообразнее использовать именно switch-case, когда выбор среди сравниваемых значений, предстоит сделать из большего количества вариантов.
Пример 1
Представим ситуацию, что вам заказали написать часть программы для прохождения онлайн теста по географии. Участники должны предложить свой вариант и в зависимости от ответа выведется на экран та или иная надпись.
Вопрос: Назовите страну из первой тройки с самой большой численностью населения?
<?php
$pop ="Китай"; //значение переменной
switch ($pop) { //условный оператор
case "Китай"://ключевое слово
echo "Китай занимает первое место"; //вывод на экран
break;
case "Индия":
echo "Индия занимает второе место";
break;
case "США":
echo "США занимают третье место";
break; //оператор переходит к default
default:
echo "Вам надо подучить географию. ";
}
?>
Как работает оператор switch?
Когда участник введёт слово, например Китай, это слово запишется в переменную $pop, оператор switch пройдется по меткам (case) по порядку, пока значение переменной не совпадет с одним из значений кейса, тогда на экран выведется: Китай занимает первое место. Но если участник введет, например слово Россия, которого нет в коде программы, то switch, не обнаружив совпадений, наткнется на break и перейдет к выполнению дефолтным инструкций, выведет на экран: Вам надо подучить географию.
Break не обязателен
Если предусмотрено выполнение только одного кейса, то в конце case обязательно должно стоять ключевое слово break, которое прерывает работу оператора switch, как только значение будет найдено или не найдено (ничего не выведет на экран или дефолтное сообщение).
Давайте посмотрим на примере, что произойдет, если в скрипте после case не будет ключевого слова break.
Пример 2
Рассмотрим на примере сказки Репка, мы уже забыли в каком порядке персонажи сказки тянут друг за другом репку.
<?php
$repka = "мышка";
switch ($repka) {
case "мышка": echo "Мышка за кошку";
case "кошка": echo "Кошка за жучку";
case "жучка": echo "Жучка за внучку";
case "внучка": echo "Внучка за бабку";
case "бабка": echo "Бабка за дедку";
case "дедка": echo "Дедка за репку";
}
?>
В переменной $repka оказалась мышка, оператор switch обнаружил мышку и ничто ему не мешает перебрать все кейсы и вывести их значения по порядку. Выполняются все кейсы, идущие следом за совпадающими значениями.
Мышка за кошкуКошка за жучку
Жучка за внучку
Внучка за бабку
Бабка за дедку
Дедка за репку
Но когда в переменную попадает дедка, то на экран выведется только последний кейс.
Дедка за репку
Пример 3
Пример, когда в кейсах нет инструкций для выполнения, но зато есть инструкция в последнем, тогда выполняется последняя инструкция.
<?php
$cheese = 'Камамбер';
switch ($cheese) {
case 'Пармезан';
case 'Моцарелла';
case 'Камамбер';
echo 'Вы настоящий гурман';
break;
default;
echo 'У вас непритязательный вкус.';
break;
}
?>
Пример, классической манипуляции, пользователь вводит любой сорт сыра из кейсов, то ему на экране выводится приятное сообщение Вы настоящий гурман. Если пользователь введет название какого-нибудь дешевого сыра, то увидит обидное сообщение – У вас непритязательный вкус.
Выводы
Когда же лучше использовать конструкцию switch-case, если if-else, делает тоже самое. Используйте оператор switch, когда надо сравнивать больше, чем два значения или ваше условие сложнее, чем простое сравнение.
- Создано 22.03.2019 10:37:00
- Михаил Русаков
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Конструкция выбора – switch-case Основы PHP с нуля Урок №10
Главная » Основы PHP » Конструкция выбора – switch-case Основы PHP с нуля Урок №10
14. 09.2017
Всем привет!
Продолжаем изучать основы PHP с нуля!
В этом уроке я расскажу вам об php конструкции выбора switch-case.
Суть конструкции switch-case состоит в том, чтобы выполнить определенное действие в зависимости от значения, которое примет переменная. Да, можно было бы обойтись конструкцией if else, но когда дело доходит до выбора от 5 и больше вариантов, то код с использованием if else становится очень большим, а это крайне неудобно, да и размер файла становится больше.
Как работает конструкция выбора switch-case?
Конструкция выбора switch-case – это своего рода переключатель, который проверяет значение переменной: как только значение совпадает, включаются действия, которые будут прописаны.
Синтаксис конструкции switch-case
<?php switch (выражение) { case "значение №1": Действие break; case "значение №2": Действие break; case "значение №3": Действие break; default: Действие, если ни один случай не подошел break; } ?>
Если у вас в значениях используются цифры, тогда можно обойтись и без двойных кавычек.
Пример:
<?php $stepkinblog = "PHP"; switch ($stepkinblog) { case "C++": //значение №1 // действие для значения №1 echo "Вы заказали учебник по C++"; break; case "JavaScript": //значение №2 // действие для значения №2 echo "Вы заказали учебник по JavaScript"; break; case "PHP": //значение №3 // действие для значения №3 echo "Вы заказали учебник по PHP"; break; case "JAVA": //значение №4 // действие для значения №4 echo "Вы заказали учебник по JAVA"; break; default: echo "Сделайте выбор"; //Действие, если ни один случай не подошел break; } ?>
Результат:
Вы заказали учебник по PHP
Разъяснение:
Так как в переменной $stepkinblog было указанно «PHP», то оператор Switch сделал переключение на case «PHP» и выполнил все действия «PHP».
Если поменяете значение «JAVA» в переменной «$stepkinblog», тогда результат будет вот таким:
Вы заказали учебник по JAVA
Если оставите переменную «$stepkinblog» пустой или поставите любое другое значение, которого нет в «case»:
<?php $stepkinblog = ""; switch ($stepkinblog) { case "C++": //значение №1 // действие для значения №1 echo "Вы заказали учебник по C++"; break; case "JavaScript": //значение №2 // действие для значения №2 echo "Вы заказали учебник по JavaScript"; break; case "PHP": //значение №3 // действие для значения №3 echo "Вы заказали учебник по PHP"; break; case "JAVA": //значение №4 // действие для значения №4 echo "Вы заказали учебник по JAVA"; break; default: echo "Сделайте выбор"; //Действие, если ни один случай не подошел break; } ?>
тогда на экране вы увидите:
Сделайте выбор
Так как ни один случай не подошел, вывелись действия, которые были записаны по умолчанию (default).
А вот так выглядел бы код, если бы я использовал конструкцию elseif :
<? // Используем elseif $stepkinblog = "PHP"; if ($stepkinblog == "C++") { echo "Вы заказали учебник по C++"; } elseif ($stepkinblog == "JavaScript") { echo "Вы заказали учебник по JavaScript"; } elseif ($stepkinblog == "PHP") { echo "Вы заказали учебник по PHP"; } elseif ($stepkinblog == "JAVA") { echo "Вы заказали учебник по JAVA"; } else { echo "Сделайте выбор"; //Действие, если ни один случай не подошел } ?>
И напоследок, если вам нужно производить одинаковые действия, например, записать в файл какую-то информацию, но с нужной переменной, тогда воспользуйтесь вот таким способом:
<?php $electroguitar = "Fender"; switch($electroguitar) { case "Gibson"; case "Fender"; case "Kramer"; echo "$electroguitar - хороший выбор гитары"; break; default; echo "Пожалуйста, сделайте выбор"; break; } ?>
Заметьте, что после значения в case стоит не двоеточие (:), а точка с запятой (;). Это дает возможность написать сразу весь список.
Результат:
Fender — хороший выбор гитары
Замените в переменной $electroguitar значение на «Kramer» и в результате вы увидите на экране:
Kramer — хороший выбор гитары
Очень удобный способ.
Синтаксис:
<?php switch (выражение) { case "значение №1"; case "значение №2"; case "значение №3"; Действие break; default: Действие, если ни один случай не подошел break; } ?>
На сегодня все! Жду вас на следующих уроках!
Подписывайтесь на обновления блога StepkinBLOG.RU!
Добавить комментарий
PHP: переключатель — ручной
Изменение языка: английскийбразильский португальскийкитайский (упрощенный)французскийнемецкийяпонскийрусскийиспанскийтурецкийДругое
Отправить запрос на вытягивание Сообщить об ошибке
(PHP 4, PHP 5, PHP 7, PHP 8)
Оператор switch
аналогичен ряду
Операторы ЕСЛИ для одного и того же выражения. Во многих случаях вы можете
хотите сравнить одну и ту же переменную (или выражение) со многими
различные значения и выполнять разные фрагменты кода в зависимости от
по какому значению он равен. Это именно то, что
9Оператор 0009 switch предназначен для.
Примечание : Обратите внимание, что в отличие от некоторых других языков, продолжить заявление применяется к
switch
и действует аналогичноbreak
. если ты иметь переключательвнутри цикла и хотят перейти к следующей итерации внешний цикл, используйте
continue 2
.
Примечание :
Обратите внимание, что switch/case делает свободное сравнение.
В следующем примере каждый блок кода эквивалентен.
Один использует серию , если
и elseif
операторов, а другой a оператор переключения
. В каждом случае выход одинаков.
Пример №1 переключатель
конструкция
switch ($i) { // Эквивалентно : if ($i == 0) { // Этот оператор switch:
case 0:
echo "i equal 0";
разрыв;
случай 1:
echo "i равно 1";
перерыв;
case 2:
echo "i равно 2";
разрыв;
}
echo "i equals 0";
} elseif ($i == 1) {
echo "i равно 1";
} elseif ($i == 2) {
echo "i равно 2";
}
?>
Важно понимать, как переключается на
.
Оператор выполняется во избежание ошибок.
Оператор switch
выполняется построчно
(фактически, утверждение за утверждением). В начале кода нет
казнен. Только когда case
заявление найдено
выражение которого оценивается как значение, совпадающее со значением switch
выражение PHP начинает выполнять
заявления. PHP продолжает выполнять операторы до конца
блока коммутатора
или в первый раз, когда он видит
оператор break
. Если вы не напишете перерыв
выписка в конце дела
список операторов, PHP продолжит выполнять операторы
следующий случай. Например:
Здесь, если $i равно 0, PHP выполнит все эхо-запросы.
заявления! Если $i равно 1, PHP выполнит два последних
эхо заявления. Вы получите ожидаемое поведение («i равно 2»
будет отображаться) только в том случае, если $i равно 2. Таким образом,
важно не забыть break
утверждений
(даже если вы хотите избежать предоставления их намеренно в соответствии с
определенные обстоятельства).
В коммутаторе
заявление, условие
оценивается только один раз, и результат сравнивается с каждым дело
выписка. В иначе
оператор, условие оценивается снова. Если ваше состояние
сложнее, чем простое сравнение, и/или зациклено,
коммутатор
может быть быстрее.
Список операторов для дела также может быть пустым, что просто передает управление в список операторов для следующего случая.
Частным случаем является 9.0009 по умолчанию случай. Этот случай соответствует все, что не соответствовало другим случаям. Например:
Примечание : Несколько случаев по умолчанию вызовут
E_COMPILE_ERROR
ошибка.
Примечание : Технически может быть указан корпус
по умолчанию
. в любом порядке. Он будет использоваться только в том случае, если не совпадает ни один другой регистр. Однако по соглашению лучше поместить его в конец, так как последняя ветка.
Если нет , случай соответствует ветке
, и нет по умолчанию
ветвь, то код выполняться не будет, как если бы выражение no if
было истинным.
Значение case может быть задано как выражение. Однако это выражение будет оценивается отдельно, а затем произвольно сравнивается со значением переключателя. Это означает его нельзя использовать для сложных оценок значения переключателя. Например:
Для более сложных сравнений значение true
может использоваться как значение переключателя.
Или, как вариант, , если
— , иначе
блоков, вместо переключаем
.
Альтернативный синтаксис управляющих структур поддерживается с помощью переключатели. Дополнительные сведения см. в разделе Альтернативный синтаксис. для структур управления.
Можно использовать точку с запятой вместо двоеточия после таких случаев, как:
См. также
- соответствует
Основное руководство по оператору switch в PHP, примеры
Резюме : в этом руководстве вы узнаете об операторе переключения PHP, который выполняет блок кода, сопоставляя выражение с несколькими значениями.
Знакомство с оператором PHP switch
Когда значение одной переменной определяет количество различных вариантов, вы можете использовать оператор if...elseif
.
Предположим, вы создаете веб-сайт, пользователи которого имеют множество ролей, таких как администратор, редактор, автор и подписчик.
В следующем примере используется оператор if elseif
для отображения другого сообщения в зависимости от роли пользователя:
Язык кода: HTML, XML (xml)
'; } еще { $message = 'Извините! Вы не авторизованы для просмотра этой страницы'; } эхо $сообщение;
Вывод:
Кодовый язык: JavaScript (javascript)
Добро пожаловать! Ознакомьтесь с некоторыми новыми статьями.
Когда значение одной переменной указывает количество различных вариантов, гораздо чище использовать оператор switch
, например:
Язык кода: HTML, XML (xml)
'; ломать; дефолт: $message = 'У вас нет прав доступа к этой странице'; } эхо $сообщение;
Ниже показан синтаксис оператора switch
:
Язык кода: HTML, XML (xml)
Оператор switch
сравнивает выражение
со значением в каждом случае.
Если выражение равно значению в случае, например, значение1
, PHP выполняет блок кода в соответствующем случае, пока не встретит первый оператор break
.
Если совпадений нет и доступно значение по умолчанию
, PHP выполняет все операторы, следующие за ключевым словом по умолчанию
.
В случае, если по умолчанию
не указан и совпадений нет, управление передается оператору, следующему за оператор переключения
.
На следующей блок-схеме показано, как работает оператор switch
:
Объединение случаев
Поскольку PHP выполняет оператор switch
с соответствующей метки case до тех пор, пока не встретит оператор break
, вы можете объединить несколько случаев в один.
Следующий пример использует оператор switch и объединяет случаи 'редактор'
и 'автор'
:
Язык кода: HTML, XML (xml)
'; ломать; дефолт: $message = 'У вас нет прав доступа к этой странице'; } эхо $сообщение;
Вывод:
Кодовый язык: PHP (php)
Добро пожаловать! Вы хотите создать новую статью?
В этом примере, если роль
— это редактор
или автор, будет показано то же сообщение.
Альтернативный синтаксис оператора PHP switch
PHP также поддерживает альтернативный синтаксис оператора switch
следующим образом:
Язык кода: HTML, XML (xml)
Альтернативный синтаксис подходит для смешивания с HTML-кодом.
Сводка
- Используйте оператор PHP
switch
вместо серии операторовif
для одного и того же выражения.
Этот урок был вам полезен?
Как использовать оператор Switch PHP
В этом руководстве я расскажу, как использовать оператор switch в PHP.
Использование оператора switch — отличная альтернатива использованию последовательности операторов if и elseif. В этом уроке мы объясним, почему вы можете предпочесть один из них другому.
Есть довольно много уникальных особенностей оператора switch, которые вам необходимо знать, если вы планируете их использовать. Например, операторы switch выполняются построчно. Если вы не используете оператор break, переключатель будет выполнять весь код после совпадения, пока не достигнет конца переключателя. Мы объясним это более подробно далее.
Вы можете вкладывать операторы switch друг в друга, но это не рекомендуется, так как это может затруднить чтение и понимание кода.
В этом руководстве будет рассказано о том, как написать оператор switch на PHP, и рассмотрены некоторые основы, которые вам необходимо знать. Мы также коснемся сравнения операторов switch с операторами if-else.
Table of Contents
- switch Statement Syntax
- switch vs if else
- How to Use a switch Statement in PHP
- Writing a Basic switch Statement
- Default Statement
- Combining Case Statements
- Using break Statements
- Вложенные операторы Switch
- Заключение
Синтаксис оператора switch
Синтаксис оператора switch довольно прост, но вам нужно знать несколько вещей о том, как они работают.
Переключатель принимает выражение, которое будет вычисляться только один раз. В большинстве случаев выражение представляет собой переменную, которую PHP сравнивает с операторами case в структуре switch. Как только совпадение будет найдено, будет выполнен блок кода, связанный с оператором case.
Переключатель может иметь много операторов case в PHP, но рекомендуется свести их к минимуму, так как большое количество операторов case может затруднить чтение кода.
Операторы break необязательны, но без них PHP будет выполнять весь код после совпадения, пока не встретит оператор break или конец блока switch.
В конце переключателя можно указать оператор по умолчанию, который будет выполняться только в том случае, если выражение не соответствует ни одному оператору case. Оператор по умолчанию является необязательным и может быть исключен из переключателя, если он вам не нужен.
После каждого оператора case вместо обычного двоеточия можно использовать точку с запятой. Однако мы рекомендуем использовать двоеточие, так как это делает код более читабельным.
В качестве альтернативы вы можете написать оператор switch, используя switch(i):
и завершить его endswitch
. Пример ниже демонстрирует альтернативный синтаксис переключателя в PHP.
switch и if-else
В этом разделе сравниваются различия между switch и серией операторов if и elseif.
Оператор PHP switch оценивается только один раз, тогда как ряд операторов if и elseif оцениваются каждый раз, когда они указаны. Эта небольшая разница может повлиять на ожидаемое поведение вашего кода, так что имейте это в виду. С точки зрения производительности, существует очень небольшая разница в производительности между использованием переключателя и последовательностью операторов if.
Наиболее значительным преимуществом использования переключателя является удобство чтения. Переключатель может быть намного проще для чтения и понимания, чем последовательность операторов if-else и elseif. Тем не менее, читаемость все еще может зависеть от личных предпочтений.
Выбор того, когда использовать оператор switch вместо ряда операторов if-else и elseif, в основном сводится к предпочтениям. Со временем вы научитесь использовать одно вместо другого. Обычно для сложных условий я использую серию if-else. Для простых сравнений я использую переключатель.
Ниже приведен переключатель и ряд операторов if-else и elseif. Оба приведут к одному и тому же результату.
Как использовать оператор switch в PHP
Разработчик сам решает, когда использовать оператор switch в коде PHP. Как правило, хорошо использовать переключатель, когда у вас есть несколько сравнений одного и того же выражения с разными значениями. Хорошо продуманный переключатель намного легче понять, чем сложную структуру if-else и elseif.
Ниже мы рассмотрим несколько различных способов написания оператора switch.
Написание базового оператора switch
В этом примере мы создаем базовый оператор switch, который сравнивает строку с несколькими различными операторами case в коммутаторе. Я объясню процесс кода ниже.
Сначала мы создаем переменную с именем $fruit
для хранения нашей строки « Apple ». Далее идет наш переключатель, где мы указываем нашу переменную в качестве выражения. Выражение будет вычислено один раз.
Теперь PHP будет сравнивать значение выражения с каждым значением в наших операторах case. Наша строка соответствует третьему оператору case, содержащему строку « Apple ».
PHP выполнит блок кода в нашем соответствующем операторе case. Блок кода содержит оператор echo и оператор break. Оператор echo выведет строку, а оператор break приведет к принудительному выходу из коммутатора.
Вывод ниже показывает, что наш $fruit 9Переменная 0010 соответствует оператору case « Apple ».
Заявление по умолчанию
В нашем примере ниже у нас есть переключатель, который использует целые числа, а не строки. Переменная ( $num
), которую мы будем использовать в выражении, имеет значение 0
и не будет соответствовать ни одному из наших операторов case в переключателе. В результате будет запущен кодовый блок по умолчанию .
Поскольку наша переменная $num
не соответствует ни одному оператору case, по умолчанию блок кода будет запущен, и вы получите вывод ниже. Если у вас нет оператора по умолчанию, ничего не будет выведено.
Объединение операторов case
Если у вас один и тот же результат для нескольких операторов case, вы можете объединить их и уменьшить повторение кода. В нашем примере ниже у нас есть один и тот же вывод для трех разных случаев: лимон, линия и апельсин.
Приведенный выше код привел к следующему результату, потому что наша переменная соответствует одному из первых трех операторов case, которые используют один и тот же блок кода. У нас есть эхо внутри блока кода, которое выводит следующий текст.
Использование операторов break
Вы можете использовать операторы break для управления тем, как оператор switch обрабатывает совпадения. Например, если разрыва не существует, переключатель будет выполнять каждый блок кода от первого совпадения до конца.
В следующем примере наша строка будет соответствовать первому оператору case. Однако операторов break нет, пока наш оператор case не проверит « Orange ». Поскольку операторов break нет, PHP выполнит первые три оператора echo.
В приведенном ниже выводе показано, как переключатель обрабатывает блоки кода оператора case без оператора break. Очень важно помнить об этом при написании операторов switch на PHP.
Вложенные операторы Switch
Последняя тема, которую я хочу затронуть, это вложенные операторы switch. Вы можете вкладывать операторы switch, но это не рекомендуется, так как это может привести к беспорядку и быстрому чтению.
Ниже приведен пример двух вложенных операторов switch в PHP.
В приведенном выше коде есть переменная ( $fruit
), которая соответствует первому оператору case (« Lemon ») в нашем внешнем переключателе. У него также есть вторая переменная ( $vegetable
), которая соответствует последнему оператору case (« Carrot ») в нашем первом вложенном переключателе. Полученный результат ниже.
Заключение
Я надеюсь, что это руководство показало вам все основы использования оператора switch в PHP. Это чрезвычайно полезный способ контролировать выполнение кода и помочь сделать код понятным для других разработчиков.
Если вы хотите узнать больше о программировании на PHP, я рекомендую ознакомиться с нашим постоянно растущим ассортиментом руководств по PHP. Мы охватываем такие темы, как циклы for, циклы while, if-else и другие. Учебники идеально подходят как для начинающих, так и для продвинутых разработчиков.
Если вы заметили, что мы можем улучшить это руководство, не стесняйтесь сообщить нам об этом, оставив комментарий ниже.
Оператор Switch в PHP
В предыдущих уроках, если мы обсуждали условие if, операторы if-else и вложенные операторы if-else. В этом руководстве мы реализуем оператор switch case. Как и во вложенных операторах if-else, вы создаете множество кодов блоков. Очень сложно кодировать и много условий. Чтобы избежать этой сложности и избежать блочного кода, мы используем операторы switch. Оператор switch основан на регистре. Операторы Switch case легче создать, чем операторы if-else и вложенные операторы if-else. Вы должны указать случай в операторе switch case. Оператор Switch — одна из лучших условных структур в PHP.
Определение и использование операторов Switch Case
Switch Case используется, чтобы избежать блоков if..else..elseif. код (вложенный if-else). Оператор Switch используется для выполнения одного из многих кодов, которые должны быть выполнены. Операторы Switch Case зависят от Cases. Если case совпадает, то выполняется код этого case, а если какой-либо case не совпадает, то выполняется код по умолчанию, это называется оператором case switch.
Синтаксис
переключатель (выражение) { Случай 1: код, который будет выполнен, если выражение совпадает ломать; случай 2: код, который будет выполнен, если выражение совпадает ломать; дефолт: код для выполнения если выражение не соответствует ни одному регистру. }
В приведенном выше синтаксисе вы можете видеть, что если случается случай 1 (соответствует), то будет напечатан первый оператор (выполнится первый код). Если второй случай произошел (совпало), то второй оператор будет напечатан (второй код будет выполнен), и если случай не произошел (нет совпадения), тогда будет выполнен код по умолчанию.
Пример оператора switch case
В данном примере мы создаем переменную. В этой переменной мы сохраняем значение. После сохранения значения эта переменная передает выражение в переключатель. Вы можете создать дело в соответствии с выражением.
Пример
Run
В приведенном выше примере мы создали случай переключения для полной недели. В переменной мы сохранили значение переменной «Пт» в виде строки. Любой случай, который соответствует выражению case, будет выполнен. В случае, если будет выполнен случай Friday, вы сохраните Fri в переменной. Кроме того, если все случаи не совпадают, будет выполнен код по умолчанию.
$день -- переменная. Switch($day) -- Переменная, переданная в switch . чехол "Солнце": echo "Сегодня воскресенье"; ----Первый случай (случай №1) ломать; корпус "Ср": echo "Сегодня среда"; ----Второй случай (случай №2) ломать; дело "Вт": echo "Сегодня вторник"; ----Третий случай (дело №3) ломать; случай "Чт": echo "Сегодня четверг"; ----Четвёртый случай (случай №4) ломать; дело "пт": эхо "Сегодня пятница"; ----Пятый случай (дело №5) ломать; корпус "Сб": эхо "Сегодня суббота"; ----Шестой случай (дело №6) ломать; чехол "Солнце": echo "Сегодня воскресенье"; ----Седьмой случай (дело №7) ломать; дефолт: echo "Какой сегодня день?"; ----(если не совпадает ни один регистр, напечатайте другой оператор) }
Регистр не совпадает с выражением switch case
Теперь логика работает, если регистр не совпадает. В данном примере мы создали три переменные. Первая переменная имеет значение 10, значение второй переменной равно 3, а третья переменная имеет значение 78. Мы передаем третью переменную под выражением case case. После этого создаем кейсы. Если ни один регистр не совпадает с выражением, будет выполнен код по умолчанию.
Пример
Вывод
Будет выполнен код по умолчанию
В операторе switch case, если case совпадает, будет выполнен код case. если случаи не совпадают, будет выполнен код по умолчанию.
Пожалуйста, поделитесь
Рекомендуемые сообщения: -
Заявление о переключении PHP | программисты
Оператор Switch может проходить через множество блоков кода. Он похож на оператор If Else, но его гораздо проще понять.
Синтаксис
Пример
Создайте новую переменную с именем num и присвойте ей значение 1.
Этот код будет выглядеть в выражении If Else так, как они похожи:
Как видите, оператор Switch более понятен для чтения и проще в управлении, если вы хотите изменить имя переменной. Ключевое слово break в операторе Switch не позволяет оператору Switch зацикливаться на остальной части кода. Если вы удалите ключевое слово break из оператора Switch, вы увидите остальные результаты. Ключевое слово по умолчанию — это результат по умолчанию, если ничего не соответствует условию, и оно идет в конце меток case.
Пример 2 — строки
Подобно приведенным выше операторам Switch, здесь вычисляется строка, а не целое число. Попробуйте ниже: введите 16, 17 или 18, и вы получите сообщение. Введите большее число, и появится другое сообщение, а если вы введете что-то еще, сработает значение по умолчанию.
Использование операторов
Вы можете использовать эти операторы, и они должны быть заключены в квадратные скобки ( ):
Оператор | Описание | Пример |
---|---|---|
< | Менее | ($ в возрасте < 20 лет) |
> | Больше | ($возраст > 20 лет) |
<= | Меньше или равно | ($возраст <= 20) |
>= | Больше или равно | ($возраст >= 20) |
!= | Не равно | ($возраст != 20) |
== | равно | ($возраст == 20) |
Пример
переключатель ($age){ случай 16: echo 'Вы недостаточно взрослые, чтобы играть в GTA, но вы можете играть в GRID!'; ломать; случай 17: echo 'Вы достаточно взрослые, чтобы водить машину!'; ломать; случай 18: echo 'Вы достаточно взрослые, чтобы играть в GTA!'; ломать; случай ($возраст > 18): echo 'Ты очень старый!'; ломать; дефолт: echo 'Это было число?'; }
В приведенном выше примере мы используем знак "больше", чтобы узнать, больше ли $age 18. Вы также можете использовать оператор равенства для сравнения значений. Попробуйте приведенный выше пример ниже.
Попробуйте!
Введите возраст:
Чувствительность к регистру
Иногда вы можете собирать пользовательские данные и циклически просматривать результаты, но случаи могут различаться, что может повлиять на результаты. Например, возьмите это:
$food = "Паста"; переключатель ($ еда) { чехол "макароны" : echo 'Это макароны'; ломать; чехол "пицца" : echo 'Это пицца!'; ломать; дефолт: Эхо "Я не знаю"; }
Это выведет «Я не знаю», потому что, хотя макароны — это один из ярлыков дела, он находится в другом регистре. Мы можем решить эту проблему, используя функцию strtolower. Это заставит значение в $food быть строчным.
$food = "Макароны"; переключатель (strtolower ($ еда)) { чехол "макароны" : echo 'Это макароны'; ломать; чехол "пицца" : echo 'Это пицца!'; ломать; дефолт: Эхо "Я не знаю"; }
Теперь будет выведен правильный результат. Это будет работать только в том случае, если метки регистра написаны строчными буквами, поэтому убедитесь, что при вводе меток они написаны строчными буквами, а не прописными. Просто помните, что при сравнении чего-либо в разных регистрах вам придется перевести регистр либо в верхний, либо в нижний регистр; нижний, вероятно, лучше, так как большинство людей обычно не печатают в верхнем регистре.
Резюме
В этом учебном пособии рассматривается оператор Switch, как использовать операторы, а также используемые ключевые слова. Вы также узнали о проблемах с чувствительностью к регистру. Просто помните, что если вы собираетесь оценивать одну переменную с несколькими результатами, используйте оператор Switch вместо оператора If Else.
« PHP для циклов » Оператор PHP While
PHP Switch Case Tutorial Пример
Хардик Парсания
— Оператор switch PHP используется для выполнения отдельных действий на основе разных условий.
— оператор переключения PHP в основном используется для выполнения одного оператора из разных условий.
— работает как функция PHP If-else-if. Он также используется как альтернатива оператору if-else-if в PHP.
— Оператор switch case проверяет ряд значений, пока не найдет совпадение, удовлетворяющее условию, а затем выполняет блок кода в соответствии с этим совпадением.
— По умолчанию случай переключения позволяет нам принять решение из различных вариантов.
— оператор Switch также похож на серию операторов IF в PHP.
— операторы Switch case являются альтернативой длинным операторам IF, которые сравнивают переменную с некоторыми целочисленными значениями.
— Условие после ключевого слова switch может быть переменной или любым другим выражением, таким как строка, целое число, символ.
– Каждая константа во всех случаях должна отличаться друг от друга.
— Оператор switch — это оператор управления, который разрешает значению изменять управление выполнением.
— Когда мы запускаем программу с оператором switch, сначала проверяется выражение, следующее за ключевым словом — switch.
– Все операторы case проверяют один за другим значение данного совпадения. Когда совпадение найдено, программа выполняет выражение, следующее за этим случаем.
— Если совпадение не найдено ни с одним из операторов case, выполняется только оператор case по умолчанию.
СИНТАКСИС :
переключатель (n) { случай случай1: код, который будет выполнен, если n=case1; ломать; случай случай2: код, который будет выполняться, если n=case2; ломать; случай case3: код, который будет выполнен, если n=case3; ломать; ... дефолт: код, который будет выполняться, если n отличается от всех меток; }
Это работает следующим образом: В начале у нас есть одно выражение n, которое анализируется один раз.
Значение выражения сравнивается со значениями для данного каждого случая в структуре.
Если есть совпадение, выполняется соответствующий блок кода с этим случаем.
Break используется для автоматического перехода к следующему делу. Если совпадения нет, выполняется оператор по умолчанию.
Важные замечания по оператору case case:
1. Повторяющиеся значения case не допускаются.
2. Оператор по умолчанию не является обязательным, он необязателен.
3. В случае переключения существует только одно выражение по умолчанию. Более одного может привести к фатальной ошибке.
4. Оператор Break также необязателен.
5. Оператор break используется внутри оператора switch. Он используется для завершения оператора. Когда достигнут оператор break, он завершит переключатель, и поток управления перейдет к следующему оператору.
6. Разрешены вложенные операторы switch. Это означает, что мы использовали оператор switch внутри другого оператора switch. Это усложняет программу.
7. Мы можем использовать точку с запятой (;) вместо двоеточия (:). Это не вызовет никакой ошибки.
СХЕМАПРИМЕР
<тело> тело>
Ниже приведен вывод приведенного выше кода:
Ваш любимый язык — PHP!
УТВЕРЖДЕНИЕ PHP SWITCH IS FALL-THROUGH
— Утверждение PHP switch является ошибочным.
— это означает, что если оператора break нет, он выполнит все операторы после получения первого совпадения.
ПРИМЕР:
<тело> "; ломать; корпус "PHP": echo "Ваш любимый язык - PHP!"; эхо ""; чехол "Питон": echo "Ваш любимый язык - Python!"; эхо ""; дефолт: echo "Ваш любимый язык не является ни JAVA, ни PHP, ни Python!"; } ?> тело>
Ниже приведен вывод приведенного выше кода:
Ваш любимый язык — PHP! Ваш любимый язык — Python! Ваш любимый язык не является ни JAVA, ни PHP, ни Python!
ВЛОЖЕННОЕ СООБЩЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ
— PHP поддерживает вложенное выражение переключателя, это означает, что мы определили другое выражение переключателя внутри выражения переключателя.
— Этот вложенный оператор switch создает сложный код, поэтому иногда возникает ошибка.
— Взгляните на вложенный оператор switch.
Пример
<тело>