Elementor Header #8

55. Конструкция Switch

1. Введение

Конструкция switch в PHP используется для выполнения различных блоков кода в зависимости от значения переменной. Это удобный способ обработки множества возможных значений, особенно когда у вас есть несколько условий для проверки.

2. Основной синтаксис switch

Конструкция switch проверяет значение выражения и выполняет соответствующий блок кода, который соответствует этому значению.

Синтаксис:

				
					<?php
switch (expression) {
    case value1:
        // Код, выполняемый если expression == value1
        break;
    case value2:
        // Код, выполняемый если expression == value2
        break;
    default:
        // Код, выполняемый если expression не совпадает с ни одним значением
        break;
}
?>

				
			
  • expression — выражение, значение которого будет проверяться.
  • case value — блок кода, который выполняется, если значение выражения совпадает с указанным значением.
  • break — завершает выполнение блока switch. Если его не использовать, выполнение продолжится и в следующих блоках case.
  • default — блок кода, который выполняется, если значение выражения не совпадает с ни одним из указанных значений. Этот блок является необязательным.

3. Примеры использования switch

Простой пример:

				
					<?php
$day = 3;

switch ($day) {
    case 1:
        echo "Monday";
        break;
    case 2:
        echo "Tuesday";
        break;
    case 3:
        echo "Wednesday";
        break;
    case 4:
        echo "Thursday";
        break;
    case 5:
        echo "Friday";
        break;
    case 6:
        echo "Saturday";
        break;
    case 7:
        echo "Sunday";
        break;
    default:
        echo "Invalid day";
        break;
}
?>

				
			

В этом примере переменной $day присваивается значение 3, и switch проверяет это значение. Поскольку оно совпадает с case 3, выводится «Wednesday».

Пример с несколькими значениями в одном блоке case:

				
					<?php
$grade = 'B';

switch ($grade) {
    case 'A':
        echo "Excellent";
        break;
    case 'B':
    case 'C':
        echo "Good";
        break;
    case 'D':
        echo "Fair";
        break;
    default:
        echo "Fail";
        break;
}
?>

				
			

Здесь case 'B' и case 'C' выполняют один и тот же блок кода. Если $grade равно ‘B’ или ‘C’, выводится «Good».

4. Использование switch с типами данных

Конструкция switch может работать с различными типами данных, такими как числа, строки и даже выражения.

Пример:

				
					<?php
$number = 10;

switch ($number % 2) {
    case 0:
        echo "The number is even.";
        break;
    case 1:
        echo "The number is odd.";
        break;
}
?>

				
			

Здесь switch проверяет остаток от деления $number на 2, и в зависимости от результата выводит, является ли число четным или нечетным.

5. Распространённые ошибки

5.1 Ошибка: Забыт break

Если забыть break, выполнение кода будет продолжаться до конца блока switch, даже если условие уже выполнено.

Пример ошибки:

				
					<?php
$score = 85;

switch ($score) {
    case $score >= 90:
        echo "Grade: A";
    case $score >= 80:
        echo "Grade: B";
    case $score >= 70:
        echo "Grade: C";
    default:
        echo "Grade: D";
}
?>

				
			

Решение: Всегда используйте break, чтобы предотвратить нежелательное продолжение выполнения.

Корректный пример:

				
					<?php
$score = 85;

switch (true) {
    case $score >= 90:
        echo "Grade: A";
        break;
    case $score >= 80:
        echo "Grade: B";
        break;
    case $score >= 70:
        echo "Grade: C";
        break;
    default:
        echo "Grade: D";
        break;
}
?>

				
			

5.2 Ошибка: Пропуск default

Если все возможные значения не покрыты и отсутствует блок default, может возникнуть ситуация, когда ни одно условие не выполнится.

Пример ошибки:

				
					<?php
$fruit = "banana";

switch ($fruit) {
    case "apple":
        echo "This is an apple.";
        break;
    case "orange":
        echo "This is an orange.";
        break;
    // Нет блока default
}
?>

				
			

Решение: Всегда добавляйте блок default, чтобы обрабатывать случаи, когда ни одно из условий не выполняется.

Корректный пример:

				
					<?php
$fruit = "banana";

switch ($fruit) {
    case "apple":
        echo "This is an apple.";
        break;
    case "orange":
        echo "This is an orange.";
        break;
    default:
        echo "Unknown fruit.";
        break;
}
?>

				
			

Заключение

Конструкция switch позволяет легко и эффективно обрабатывать различные значения переменной, обеспечивая более чистый и структурированный код по сравнению с множественными if-else конструкциями. Правильное использование switch и внимание к распространённым ошибкам помогут вам писать более надёжный и поддерживаемый код.

6. Тестовое задание

Для закрепления материала выполните следующее задание:

  1. Напишите код, который определяет день недели по числу от 1 до 7 и выводит соответствующее название дня. Используйте конструкцию switch.

  2. Создайте функцию getSeason, которая принимает месяц (1-12) и возвращает название сезона (зима, весна, лето, осень) в зависимости от месяца.

  3. Реализуйте функцию trafficLight, которая принимает цвет светофора (красный, жёлтый, зелёный) и возвращает сообщение о действиях, которые необходимо предпринять (например, «Стоп», «Будьте осторожны», «Поехали»).

Пример выполнения задания:

				
					<?php
// 1. Определение дня недели
$dayNumber = 4;

switch ($dayNumber) {
    case 1:
        echo "Monday";
        break;
    case 2:
        echo "Tuesday";
        break;
    case 3:
        echo "Wednesday";
        break;
    case 4:
        echo "Thursday";
        break;
    case 5:
        echo "Friday";
        break;
    case 6:
        echo "Saturday";
        break;
    case 7:
        echo "Sunday";
        break;
    default:
        echo "Invalid day number";
        break;
}

// 2. Функция getSeason
function getSeason($month) {
    switch ($month) {
        case 12:
        case 1:
        case 2:
            return "Winter";
        case 3:
        case 4:
        case 5:
            return "Spring";
        case 6:
        case 7:
        case 8:
            return "Summer";
        case 9:
        case 10:
        case 11:
            return "Autumn";
        default:
            return "Invalid month";
    }
}

echo getSeason(5); // Вывод: Spring

// 3. Функция trafficLight
function trafficLight($color) {
    switch ($color) {
        case "red":
            return "Stop";
        case "yellow":
            return "Caution";
        case "green":
            return "Go";
        default:
            return "Invalid color";
    }
}

echo trafficLight("green"); // Вывод: Go
?>

				
			

Удачи в выполнении задания и дальнейшем изучении PHP!

logo