Уроки PHP – опис оператора switch (перемикання)

Оператор switch оцінює умову і надає кілька точок прийняття рішення, в залежності від значення. Оператор switch аналогічний серії операторів if/else для одного і того ж виразу. Якщо вам потрібно порівняти одну і ту ж змінну (або вираз) з багатьма різними значеннями і виконувати різні фрагменти коду в залежності від значення, тоді вам відмінно підійде оператор switch.

У сьогоднішній статті ми розглянемо оператор switch (перемикання) і порівняємо його з операторами if/else та elseif.

 

 

Нижче представлений простий приклад перемикання між різними умовами за допомогою операторів if та elseif.

<?php
if ($raining) {
  // надіти гумові чоботи
} elseif ($snowing) {
  // надіти теплі черевики
} elseif ($sunny) {
  // надіти сандалі
} else {
  // залишатися вдома
}
?>

 

 

Тут ми оцінюємо тільки три результати: йде дощ, йде сніг або на вулиці сонячна погода. Також ми врахували за допомогою оператора else всі інші результати.

 

Розглянемо інший варіант перевірки, наприклад, якщо нам потрібно знати, який сьогодні день тижня (і, відповідно, виконати якусь дію):

<?php
$day = date('N'); // отримуємо поточний день тижня (його номер)
if ($day == 1) {
  echo "Сьогодні понеділок";
} elseif ($day == 2) {
  echo "Сьогодні вівторок";
} elseif ($day == 3) {
  echo "Сьогодні середа";
} elseif ($day == 4) {
  echo "Сьогодні четвер";
} elseif ($day == 5) {
  echo "Сьогодні п’ятниця";
} elseif ($day == 6) {
  echo "Сьогодні субота";
} else {
  echo "Сьогодні неділя";
}
?>

 

Більше інформації по роботі з датами в PHP ви знайдете тут.

 

 

В даному прикладі не дуже багато варіантів результатів, але їх стає все важче читати. Уявіть собі, що таких результатів кілька десятків?

В такому випадку вам потрібно спробувати використовувати оператор перемикання (switch). Він дуже схожий на оператор if/elseif в тому, що він приймає умову і надає кілька точок прийняття рішення, але його набагато легше читати та підтримувати.

 

Давайте для наведеного вище прикладу будемо використовувати оператор switch:

<?php
$day = date('N'); // отримуємо поточний день тижня (його номер)
switch ($day) {
 case 1:
  echo "Сьогодні понеділок";
  break;
 case 2:
  echo "Сьогодні вівторок";
  break;
 case 3:
  echo "Сьогодні середа";
  break;
 case 4:
  echo "Сьогодні четвер";
  break;
 case 5:
  echo "Сьогодні п’ятниця";
  break;
 case 6:
  echo "Сьогодні субота";
  break;
 default:
  echo "Сьогодні неділя";
}
?>

 

 

Тут концепція така ж, як і в операторі if: він перевіряє умову (в даному прикладі значення дня) і перевіряє його по кожному оператору case. Якщо умова збігається з оператором case, буде виконаний код в цьому блоці. Тільки врахуйте, що PHP буде продовжувати виконувати оператори до кінця блоку switch або до тих пір, поки не зустріне оператор break. Якщо ви не напишете оператор break в кінці секції case, PHP буде продовжувати виконувати команди наступних секцій case.

Також тут використовується оператор default, який вступає в силу, коли не спрацював жоден з інших операторів case.

 

Recent Posts

Самопізнання як шлях до гармонії: що про це каже наука

У сучасному світі, де щодня від нас вимагають бути в ресурсі, відповідати зовнішнім очікуванням та…

2 дні ago

Що таке VPN (віртуальна приватна мережа), – і як вона захищає в Інтернеті?

Існує багато способів захистити свої дані в Інтернеті. Одним з найкращих рішень можна назвати віртуальну…

3 дні ago

Що таке проксі-сервер і чи потрібен він вам?

Реалії сьогодення такі, що все важче стає залишатися приватним при ​​перегляді веб-сторінок, і це ще…

4 дні ago

Переваги шоу-руму IDEALDOM на Борщагівці

Шоу-рум керамогранітної плитки IDEALDOM, що розташований за адресою м.Київ, с.Петропавлівська Борщагівка, вул.Озерна, 10, — це…

5 днів ago

Детальний огляд та думка про онлайн агента з продажу турів в Україні

Планування відпустки у цифрову епоху вже не потребує візитів до туристичних агенцій. Сучасні онлайн-сервіси дозволяють…

1 тиждень ago

Рекомендації щодо оптимізації рекламних кампаній для досягнення високих конверсій

Для кожного бізнесу рекламна кампанія з високою конверсією — це найбільш бажаний результат, якого хочеться…

1 тиждень ago