Switch Statement
Часть раздела Основы путешествия по PHP на Coddy — урок 32 из 71.
Когда вам нужно сравнить одну переменную с множеством конкретных значений, switch statement предлагает более чистую альтернативу длинным цепочкам if-elseif.
Оператор switch проверяет переменную один раз и затем сопоставляет её с различными значениями case:
<?php
$day = "Monday";
switch ($day) {
case "Monday":
echo "Start of the week";
break;
case "Friday":
echo "Almost weekend";
break;
case "Saturday":
case "Sunday":
echo "Weekend!";
break;
default:
echo "Regular day";
}
?>PHP сравнивает $day с каждым case. Когда находит совпадение, выполняет код этого блока.
Оператор break крайне важен — он указывает PHP выйти из switch после выполнения совпавшего case. Без него PHP продолжит выполнять весь код ниже, даже из других cases.
Обратите внимание, как суббота и воскресенье используют один и тот же код, объединяя case вместе. Случай default действует как else — он выполняется, когда ни один другой case не совпадает.
<?php
$grade = "B";
switch ($grade) {
case "A":
echo "Excellent!";
break;
case "B":
echo "Good job!";
break;
default:
echo "Keep trying!";
}
?>Используйте switch при сравнении одной переменной с несколькими точными значениями. Для сложных условий или диапазонов придерживайтесь инструкций if-elseif.
Задание
ЛегкоПрочитайте строку command из ввода, представляющую цвет светофора.
Используйте оператор switch для определения соответствующего действия на основе цвета:
- Если команда равна
red, выведитеStop - Если команда равна
yellow, выведитеSlow down - Если команда равна
green, выведитеGo - Если команда равна
flashing redилиflashing yellow, выведитеProceed with caution - Для любого другого значения выведите
Invalid signal
Пример:
Если ввод — green, вывод должен быть:
GoЕсли ввод — flashing red, вывод должен быть:
Proceed with cautionЕсли ввод — blue, вывод должен быть:
Invalid signalШпаргалка
Оператор switch предоставляет более чистый способ сравнения одной переменной с несколькими конкретными значениями:
<?php
$day = "Monday";
switch ($day) {
case "Monday":
echo "Start of the week";
break;
case "Friday":
echo "Almost weekend";
break;
default:
echo "Regular day";
}
?>Оператор break завершает switch после выполнения подходящего case. Без него PHP продолжает выполнять код из последующих cases.
Несколько cases могут использовать один и тот же код, если их расположить подряд:
<?php
switch ($day) {
case "Saturday":
case "Sunday":
echo "Weekend!";
break;
}
?>Case default выполняется, когда ни один другой case не подходит, аналогично оператору else.
Используйте операторы switch для сравнения одной переменной с несколькими точными значениями. Для сложных условий или диапазонов используйте операторы if-elseif вместо этого.
Попробуйте сами
<?php
// Читаем ввод
$command = trim(fgets(STDIN));
// TODO: Напишите свой код ниже, используя оператор switch
// Определяем соответствующее действие на основе цвета светофора
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators