Оператор switch-case является альтернативой оператору if-elseif-else, который делает почти то же самое. Оператор switch-case проверяет переменную на соответствие серии значений, пока не найдет совпадение, а затем выполняет блок кода, соответствующий этому совпадению.

switch(n) {
    case label1:
        // Код для выполнения, если n=label1
        break;
    case label2:
        // Код для выполнения, если n=label2
        break;
    ...
    default:
        // Код для выполнения, если n отличается от всех меток
}

Рассмотрим следующий пример, в котором для каждого дня отображаются разные сообщения.

<?php
$today = date("D");
switch($today) {
    case "Mon":
        echo "Сегодня понедельник. Нужно убрать в своем доме.";
        break;
    case "Tue":
        echo "Сегодня вторник. Нужно купить немного еды.";
        break;
    case "Wed":
        echo "Сегодня среда. Нужно посетите врача.";
        break;
    case "Thu":
        echo "Сегодня четверг. Нужно отремонтировать свою машину.";
        break;
    case "Fri":
        echo "Сегодня пятница. У нас запланирована вечеринка.";
        break;
    case "Sat":
        echo "Сегодня суббота. Время кино.";
        break;
    case "Sun":
        echo "Сегодня воскресенье. Пора немного отдохнуть.";
        break;
    default:
        echo "Нет информации на этот день.";
        break;
}
?>

У switch-case есть одно важное отличие от оператора if-elseif-else. Оператор switch выполняется строка за строкой (т.е. оператор за оператором), и как только PHP находит оператор case, который оценивается как истинный, он не только выполняет код, соответствующий этому оператору case, но также выполняет все последующие операторы case до конца.

Чтобы предотвратить это, нужно добавить оператор break в конец каждого блока case. Оператор break сообщает PHP выйти из блока операторов switch-case после выполнения кода, связанного с первым истинным случаем.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.