Подтвердить что ты не робот

Переключатель vs if statements

У меня дилемма. Что лучше всего использовать и почему.. переключиться или если?

switch ($x) 
{
case 1:
  //mysql query 
  //echo something
  break;
case 2:
  //mysql query 
  //echo something
  break;
}

...

if ($x == 1) {
    //mysql query 
    //echo something    
} 

if ($x == 2) {   
    //mysql query 
    //echo something
}  
4b9b3361

Ответ 1

Они имеют разные значения.

Первый пример остановится при выполнении условия.

Второй проверит дважды $x.

Вы можете сделать свой второй if a else if. Это будет означать, что блок будет пропущен, как только одно условие примет значение true.

Но если вам интересно, какой из них самый быстрый, вы должны подумать, что наиболее эффективно сообщает то, что я хочу делать. Они, скорее всего, окажутся условными переходами в целевой архитектуре.

Преждевременная оптимизация... (вы знаете, остальные: P)

Ответ 2

Выключатель лучше, если имеется более двух вариантов. Это в основном для чтения кода и ремонтопригодности, а не для производительности.

Как отмечали другие, ваши примеры не эквивалентны.

Ответ 3

Сначала у вас есть не то же самое

switch(value)
  case condition1:
    break;
  case condition2:
    break

if (condition1) {
}
if (condition2) {
}

Это синонимы

switch(value)
  case condition1:
    break;
  case condition2:
    break

if (condition1) {
}
else if (condition2) {
}

Во-вторых, если вы говорите о моем втором примере, где эти два являются синонимами. Тогда использование операторов switch может облегчить некоторую боль при кодировании много операторов if ..else if....

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

Ответ 4

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

Ответ 5

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

Операторы Switch делают более очевидным, что вы просто определяете, какое из допустимых значений имеет переменная.

Если у вас более сложные условия или несколько переменных для рассмотрения, используйте if-statements.

Ответ 6

оба утверждения являются операцией принятия решений, сравнивая некоторые параметры, а затем отображают результаты. оператор switch, без сомнения, быстрее, чем оператор if, но оператор if имеет большее преимущество перед оператором switch, когда вы должны использовать логические операции, такие как (<, > , < =, > =,! =, = знак равно всякий раз, когда вы сталкиваетесь с логическими операциями, вы будете удалены с помощью оператора switch, но не беспокойтесь, есть другой способ, который может использоваться для достижения вашей цели, которая является if-statement или if-else или if-else-if выражение. Я предлагаю вам использовать if-else большую часть времени, а не коммутатор.