Intereting Posts
как получить месяц с даты в mysql Невозможно разобрать XML-данные с двоеточием (:) из ответа с помощью getNamespaces () UID скрипта «/home/…/public_html/index.php» меньше min_uid Заголовок ('Content-Type: text / plain'); необходимо вообще? Разбирайте теги CFML в PHP Разрешение: эта таблица не содержит уникальный столбец. Редактирование сетки, флажок, редактирование, копирование и удаление недоступны php-запрос для широты и долготы iOS не ищет близлежащие mysql lat и lon с выводом xml Есть ли более простой способ убедиться, что значение в массиве равно чем-то php? Как предотвратить PHP для преобразования объекта DateTime с значением 0000-00-00 в значение -0001-11-30 Как установить модуль bcmath? Переадресация страницы через определенное время PHP Doctrine entitymanager clear не полностью очищает Проблема с php regex Как заставить переменные работать в Single Quotes правильно? Как удалить расстояние между линиями в Textarea?

Как использовать случай переключения «или» в PHP?

Есть ли способ использовать оператор OR или эквивалент в php-переключателе? Например, что-то вроде этого:

switch ($value) { case 1 || 2: echo 'the value is either 1 or 2'; break; } 

     switch ($value) { case 1: case 2: echo "the value is either 1 or 2."; break; } 

    Это называется «проваливанием» блока корпуса. Этот термин существует в большинстве языков, реализующих оператор switch.

    Если вы должны использовать || с помощью switch вы можете попробовать:

     $v = 1; switch (true) { case ($v == 1 || $v == 2): echo 'the value is either 1 or 2'; break; } 

    Если бы не ваше предпочтительное решение было бы

     switch($v) { case 1: case 2: echo "the value is either 1 or 2"; break; } 

    Проблема в том, что оба метода неэффективны при работе с большими случаями … представьте, что от 1 до 100 это будет отлично работать

     $r1 = range(1, 100); $r2 = range(100, 200); $v = 76; switch (true) { case in_array($v, $r1) : echo 'the value is in range 1 to 100'; break; case in_array($v, $r2) : echo 'the value is in range 100 to 200'; break; } 

    Я не буду повторять другие ответы, потому что они все правильные, но я просто добавлю, что вы не можете использовать переключатель для более «сложных» инструкций, например: для проверки, если значение «больше 3», между 4 и 6 "и т. д. Если вам нужно сделать что-то подобное, придерживайтесь инструкций if , или если есть особенно сильная потребность в switch то можно использовать его обратно:

     switch (true) { case ($value > 3) : // value is greater than 3 break; case ($value >= 4 && $value <= 6) : // value is between 4 and 6 break; } 

    но, как я уже сказал, я лично использовал if заявление if .

    Попробуйте следующие примеры в этой статье: http://phpswitch.com/

    Возможные случаи переключения:

    (я). Простой оператор switch

    Оператор switch – чудесный и волшебный. Это часть языка, которая позволяет вам выбирать между различными параметрами для значения и запускать разные фрагменты кода в зависимости от того, какое значение установлено.

    Каждая возможная опция задается случаем в инструкции switch.

    Пример :

     switch($bar) { case 4: echo "This is not the number you're looking for.\n"; $foo = 92; } 

    (II). Разделение кодовых блоков

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

    Пример :

     case 4: echo "This is not the number you're looking for.\n"; $foo = 92; break; case 5: echo "A copy of Ringworld is on its way to you!\n"; $foo = 34; break; 

    (III). Использование прохода для нескольких случаев

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

    Пример :

    случай 2:

     case 3: case 4: echo "This is not the number you're looking for.\n"; $foo = 92; break; case 5: echo "A copy of Ringworld is on its way to you!\n"; $foo = 34; break; 

    (IV). Расширенное переключение: условия

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

    Пример :

     switch(true) { case (strlen($foo) > 30): $error = "The value provided is too long."; $valid = false; break; case (!preg_match('/^[A-Z0-9]+$/i', $foo)): $error = "The value must be alphanumeric."; $valid = false; break; default: $valid = true; break; } 

    Я думаю, это может помочь вам решить вашу проблему.

    Пытаться

     switch($value) { case 1: case 2: echo "the value is either 1 or 2"; break; } 

    Я предлагаю вам пройти через http://php.net/manual/en/control-structures.switch.php (manual)

     switch ($your_variable) { case 1: case 2: echo "the value is either 1 or 2."; break; } 

    объяснение

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

    используйте этот код:

     switch($a) { case 1: case 2: ....... ....... ....... break; } 

    блок вызывал как 1, так и 2.

     switch ($value) { case 1: case 2: echo 'the value is either 1 or 2'; break; } 

    Лучший способ может быть, если еще с запросом. Кроме того, это может быть проще и понятнее.

    Пример:

     <?php $go = $_REQUEST['go']; ?> <?php if ($go == 'general_information'){?> <div> echo "hello"; }?> 

    Вместо использования функций, которые не будут хорошо работать с PHP, особенно когда у вас есть PHP в HTML.