W3docs

case

Ключевое слово case в PHP используется внутри оператора switch для выполнения кода в зависимости от значения переменной.

Как PHP-разработчик, вы наверняка использовали оператор switch для обработки нескольких условий в коде. Ключевое слово case является ключевым компонентом оператора switch, позволяя определять конкретные действия в зависимости от значения переменной. На этой странице описан синтаксис case, принцип работы проваливания и break, особенность нестрогого сравнения, паттерн switch (true) для диапазонов, а также связь case с цепочками if/elseif.

Синтаксис

Ключевое слово «case» используется для определения конкретного действия в зависимости от значения переменной внутри оператора «switch». Базовый синтаксис использования ключевого слова «case» в PHP:

Синтаксис PHP для case

<?php

switch ($variable) {
  case $value1:
    // Code to execute if $variable equals $value1
    break;
  case $value2:
    // Code to execute if $variable equals $value2
    break;
  default:
    // Code to execute if $variable does not equal any of the specified values
}

В этом примере ключевое слово «case» используется для определения конкретных действий в зависимости от значения переменной «$variable». Оператор break принципиально важен: он завершает блок switch и предотвращает «проваливание» в следующий case. Без него PHP продолжит выполнять код в последующих case до тех пор, пока не встретит break или конец блока switch. Также обратите внимание, что switch в PHP по умолчанию использует нестрогое сравнение (==), то есть case 0 совпадёт также с "0" или false. Используйте логику строгого сравнения, если требуется точное совпадение типов.

Примеры

Рассмотрим несколько практических примеров использования ключевого слова «case»:

Пример использования PHP case

<?php

// Example 1
$day = "Monday";

switch ($day) {
    case "Monday":
        echo "Today is Monday." . PHP_EOL;
        break;
    case "Tuesday":
        echo "Today is Tuesday.";
        break;
    case "Wednesday":
        echo "Today is Wednesday.";
        break;
    default:
        echo "Today is not Monday, Tuesday, or Wednesday.";
}

// Output: Today is Monday.

// Example 2
$grade = 85;

switch (true) {
    case $grade >= 90:
        echo "A";
        break;
    case $grade >= 80:
        echo "B";
        break;
    case $grade >= 70:
        echo "C";
        break;
    case $grade >= 60:
        echo "D";
        break;
    default:
        echo "F";
}

// Output: B

Пример 1 непосредственно сопоставляет строковое значение. Пример 2 использует паттерн switch (true): каждый case содержит boolean-выражение, и выполняется первый, который вычисляется в true. Это идиоматический способ работы с диапазонами в switch, поскольку обычный case выполняет только проверку на равенство.

Группировка case (намеренное проваливание)

Поскольку case без break проваливается в следующий, можно стекировать метки для выполнения одного блока при нескольких значениях:

<?php

$day = "Sat";

switch ($day) {
    case "Sat":
    case "Sun":
        echo "Weekend";
        break;
    default:
        echo "Weekday";
}

// Output: Weekend

Здесь "Sat" совпадает с первой меткой, проваливается через пустой case "Sun" и выполняет общий блок. Это единственная ситуация, когда пропуск break является намеренным, а не ошибкой.

Преимущества

Использование ключевого слова «case» имеет несколько преимуществ, в том числе:

  • Упрощение кода: ключевое слово «case» позволяет писать более короткий и лаконичный код, который легче читать и понимать.
  • Улучшенная читаемость: оператор «switch» обеспечивает более чистую структуру, чем длинные цепочки операторов «if/elseif», при сравнении одной переменной с несколькими значениями.
  • Повышенная гибкость: ключевое слово «case» позволяет определять конкретные действия в зависимости от значения переменной, делая код более адаптируемым к различным сценариям.

Заключение

Ключевое слово case позволяет определять конкретные действия на основе значения переменной внутри оператора switch. Помните о двух типичных ошибках: добавляйте break в каждый case, если не планируете проваливание, и учитывайте нестрогое сравнение при сопоставлении чисел со строками.

Связанные темы

  • Оператор switch в PHP — полная структура, внутри которой используется case.
  • switch — справочник по ключевому слову switch.
  • PHP if...else...elseif — когда цепочка условий читается лучше, чем switch.
  • Операторы PHP — чем отличаются сравнение == (нестрогое) и === (строгое).

Практика

Практика
Какие из перечисленных ниже являются типами управляющих структур switch в PHP?
Какие из перечисленных ниже являются типами управляющих структур switch в PHP?
Was this page helpful?