У меня дилемма. Что лучше всего использовать и почему .. переключиться или если?
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 }
Они имеют разные значения.
Первый пример остановится при выполнении условия.
Второй будет дважды проверять $x
.
Вы можете сделать свою вторую, if
хотите, else if
. Это будет означать, что блок будет пропущен, как только одно условие примет значение true .
Но если вам интересно, какой из них самый быстрый, вы должны подумать, что наиболее эффективно сообщает то, что я хочу делать . Они, скорее всего, окажутся условными переходами в целевой архитектуре.
Преждевременная оптимизация … (вы знаете, остальные: P)
Переключатель лучше, когда есть более двух вариантов. Это в основном для чтения кода и ремонтопригодности, а не для производительности.
Как указывали другие, ваши примеры не эквивалентны.
Сначала то, что у вас есть, не то же самое
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
statements ….
Коммутаторы с моей точки зрения также могут обеспечить более читаемость. Но даже тогда бывают случаи использования if...else
просто лучше, особенно со сложной логикой.
Оператор switch будет быстрее, потому что он проверяет значение только один раз.
Если у вас есть одна переменная, набор возможных значений, и вы хотите выполнять разные действия для каждого значения, для этого нужен случай переключения.
Операторы Switch делают более очевидным, что вы просто определяете, какое из допустимых значений имеет переменная.
Если у вас более сложные условия или несколько переменных, которые следует учитывать, используйте if-statements.
оба утверждения – это утверждение принятия решения, сравнивая некоторые параметры и затем показывающие результаты. оператор switch, без сомнения, быстрее, чем оператор if, но оператор if имеет большее преимущество перед оператором switch, когда вы должны использовать логические операции, такие как (<,>, <=,> =,! =, ==) , всякий раз, когда вы сталкиваетесь с логическими операциями, вы будете удалены с помощью оператора switch, но не беспокойтесь, есть другой способ, который может использоваться для достижения вашей цели, которая является if-statement или if-else или if-else-if заявление. Я предлагаю вам использовать if-else большую часть времени, а не коммутатор.