Intereting Posts
Как удалить каждый третий элемент в php-массиве до тех пор, пока останется только один элемент и не напечатает этот элемент? Список ссылок на основе каталога без расширения файла и дефиса в php Удалить все изображения старше 1 часа Получение / хранение всех связанных актеров в Freebase Как передать объекты по ссылке в PHP 5? github api возвращает 1 в конце json. это ошибка? Получение Fatal Error Uncaught CurlException: 26: не удалось открыть файл Как я могу использовать в .htaccess? Добавить купон в электронную почту для обработки, только если клиент не использовал один Zend Framework 2 устанавливает пользовательский макет и задает проблему Интеграция PHP-сайта с аутентификацией пользователя WordPress Объединение регулярного выражения для проверки номера телефона в Великобритании и США Azure window sever не может загружать файл с php Проверьте, когда была обновлена ​​база данных / таблицы SQLite (PHP) Правильный способ дезактивации ввода в MySQL с использованием PDO

Корпус выключателя с тремя параметрами?

Можно ли использовать три параметра в коммутационном шкафу, например:

switch($var1, $var2, $var3){ case true, false, false: echo "Hello"; break; } 

Если нет, должен ли я использовать if-else или есть лучшее решение?

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

 switch (array($var1, $var2, $var3)) { case array(true, false, false): echo "hello"; break; } 

Я бы просто использовал if / else

 if($var1 == true && $var2 == false && $var3 == false){ echo "Hello"; } 

или

 if($var1 && !($var2 && $var3)) { echo "Hello"; } 

Здесь у вас нет ситуации переключения. У вас несколько условий:

 if($var && !($var2 || $var3)) { ... 

Я не думаю, что ваш синтаксис действителен.

Я бы вложил инструкции switch.

Другой вариант – создать функцию, которая отображает три параметра в целое число и использовать их в инструкции switch.

 function MapBool($var1, $var2, $var3){ // ... } switch(MapBool($var1, $var2, $var3)) { case 0: echo "Hello"; break; // ... } 

Это то, что раньше обрабатывалось побитовыми операторами:

 if (($var1 << 2) & ($var2 << 1) & $var3) == 4) ... 

… назад, когда «истина» была 1.

При этом выше сказанное кратким, но его довольно трудно читать и поддерживать. Тем не менее, если у вас много подобных утверждений, переключение / ANDing может быть способом, чтобы заставить вещи под контролем:

 switch (($var1 << 2) & ($var2 << 1) & $var3)) { case 0: // false, false, false ...stuff... case 1: // false, false, true ...different stuff... // all 8 cases if you REALLY care } 

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