Есть ли способ использовать оператор 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.