Я знаю, что это может быть простой вопрос, но хочу знать каждое мнение по этому поводу.
в чем разница между функцией switch и IF в PHP? То, что я вижу, – это когда бывшая функция «switch» использует функцию «IF», там тоже применяется. Исправьте меня, если я ошибаюсь.
Или любая разница в производительности между двумя?
Или любая разница в производительности между двумя?
Забудьте о разнице в производительности на этом уровне – микроскопический, но вы почувствуете это только при выполнении сотен тысяч операций, если вообще. 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 { .... }
Редактировать: Вдохновленный комментарием Кучен, для полноты некоторых тестов (результаты будут разными, это живой). Имейте в виду, что это тесты, которые выполняются в 1000 раз . Разница для пары if
's полностью пренебрежимо мала .
Заключение (от phpbench.com) :
Использование переключателя / case или if / elseif почти то же самое. Обратите внимание, что тест не соответствует === (в точности равен) и немного быстрее, чем при использовании == (равно).
Если у вас есть простые условия, например, если что-то приравнивается к чему-то другому, тогда переключатель идеален.
Например, вместо того, чтобы делать следующее:
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-4 последовательных условий, это означает, что у вас, скорее всего, есть проектные ошибки.
Обычно вы можете заменить такой оператор циклом или более четким дизайном приложения.
Однако не забывайте, что коммутатор не обязательно работает как простой оператор if. Помня о том, что коммутатор не требует перерыва в конце каждого случая, и, оставляя этот разрыв, вы можете «провалиться» в следующий случай, также может позволить некоторые интересные и несколько сложные «ifs».