Каково различие между Переключателем и ЕСЛИ?

Я знаю, что это может быть простым вопросом, но хотеть знать каждое мнение о об этом.

каково различие между переключателем и ЕСЛИ функция в PHP?? То, что я вижу, - то, где когда-либо "переключают" функциональное использование, "ЕСЛИ" функция также применяется там.. исправьте меня, если я неправ..

Или какая-либо производительность мудрое различие между два??

5
задан mathew 5 July 2010 в 10:37
поделиться

4 ответа

Или какая-либо разница в производительности между двумя ??

Забудьте о разнице в производительности на этом уровне - она ​​может быть микроскопической, но вы почувствуете это только при выполнении сотен тысяч операций, если вообще. switch - это конструкция для лучшей читаемости кода и удобства сопровождения:

switch ($value) 
 {
 case 1:   .... break;
 case 2:   .... break;
 case 3:   .... break;
 case 4:   .... break;
 case 5:   .... break;
 default:  .... break;
 }

в основном гораздо более понятный и читаемый, чем

if ($value == 1) { .... }
elseif ($value == 2) { .... }
elseif ($value == 3) { .... }
elseif ($value == 4) { .... }
elseif ($value == 5) { .... }
else { .... }

Edit: На основе комментария Кучена, для полноты картины некоторые тесты (результаты будут разные, живая). Имейте в виду, что эти тесты выполняются 1000 раз . Разница для пары if является совершенно незначительной .

  • if и elseif (с использованием ==) 174 мкс
  • if, elseif и else (с использованием ==) 223 мкс
  • if, elseif и else (с использованием ===) 130 мкс
  • переключатель / случай 183 мкс
  • переключатель / случай / значение по умолчанию 215 мкс

Заключение (с phpbench.com) :

Использование переключателя / корпуса или if / elseif почти то же самое. Обратите внимание, что в тесте используется unsing === (точно равно), и он выполняется немного быстрее, чем при использовании == (равно).

19
ответ дан 18 December 2019 в 06:10
поделиться

Если у вас есть простые условия, например, если что-то приравнивается к чему-то другому, то переключатель является идеальным.

Например, вместо того, чтобы делать следующее:

if($bla == 1) {

} elseif($bla == 2) {

} elseif($bla == 3) {

} etc...

Лучше делать это так:

switch($bla) {
  case 1:
    ...
    break;
  case 2:
    ...
    break;
  case 3:
    ...
    break;
  default:
    ...
    break;
}

В качестве альтернативы, если у вас сложные условия, вы должны использовать if / else.

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

3
ответ дан 18 December 2019 в 06:10
поделиться

Нет, вы правы.
Между этими заявлениями нет большой разницы.
Вы можете использовать тот, который вам нравится.

Просто имейте в виду, что если вам приходится использовать более 3-4 последовательных условий - это означает, что у вас, скорее всего, есть конструктивные ошибки.

Обычно вы можете заменить такой оператор циклом или более понятным дизайном приложения.

2
ответ дан 18 December 2019 в 06:10
поделиться

Не забывайте, однако, что переключатель не обязательно работает как простой оператор if. Помня о том, что переключение не требует перерыва в конце каждого дела, и оставив этот перерыв, вы также можете «перейти» к следующему кейсу, что может позволить сделать некоторые интересные и в некоторой степени сложные «если».

0
ответ дан 18 December 2019 в 06:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: