Есть ли способ использования оператора OR или эквивалента в php-переключателе? Например, что-то вроде этого:Как использовать случай переключения «или» в PHP?
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
Есть ли способ использования оператора OR или эквивалента в php-переключателе? Например, что-то вроде этого:Как использовать случай переключения «или» в 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($value) {
case 1:
case 2:
echo "the value is either 1 or 2";
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
заявление там.
Лучший способ может быть, если еще с запросом. Кроме того, это может быть проще и понятнее.
Пример:
<?php
$go = $_REQUEST['go'];
?>
<?php if ($go == 'general_information'){?>
<div>
echo "hello";
}?>
Вместо того, чтобы использовать функции, которые не будут хорошо работать с PHP, особенно если у вас есть PHP в HTML.
Если вы должны использовать ||
с 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;
}
использовать этот код:
switch($a) {
case 1:
case 2:
.......
.......
.......
break;
}
блок называется как для 1 и 2.
switch ($value)
{
case 1:
case 2:
echo 'the value is either 1 or 2';
break;
}
Я предлагаю вам пройти через http://php.net/manual/en/control-structures.switch.php (ручной)
switch ($your_variable)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
объяснения
Как и для ценности, вам нужно выполнить один оператор, если вы можете положить его без перерыва как , так как до тех пор, пока не будет найден разрыв, он продолжит выполнение кода, и если он обнаружен, он выйдет из корпуса коммутатора.
Try с этими примерами, в этой статье: http://phpswitch.com/
Возможные случаи переключателя:
(я). Простая заявка на включение
Заявление о переключении является чудесным и волшебным. Это часть языка, которая позволяет вам выбирать между различными параметрами для значения и запускать разные фрагменты кода в зависимости от того, какое значение установлено.
Каждая возможная опция задается случаем в инструкции переключателя.
Пример:
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). Advanced переключения: случаи Состояние
переключатель РНР не только позволяет переключиться на значение конкретной переменной: вы можете использовать любое выражение в качестве одного из случаев, до тех пор, как она дает значение случай использовать. В качестве примера, вот простой валидатор написана с помощью переключателя:
Пример:
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;
}
я думаю, что это может помочь вам решить вашу проблему.
Рад видеть, что вы рекомендовали if() over switch() в этом случае. Этот тип коммутатора просто добавляет сложности, ИМО. – moo 2008-10-16 02:08:01
Да, у вас должна быть достаточно веская причина выбирать этот стиль, но хорошо знать, что это возможно. – nickf 2008-10-16 02:14:52
Я действительно рад узнать об этом.Каждый раз, когда я создаю проект на языке Basic-y, мне не хватает C-style `switch()`, и когда я работаю на языке C-ish, мне очень не хватает «Select Case», что на самом деле сокращенный способ сказать «есть большой блок, если, иначе, если, иначе, если ... здесь». – 2010-10-09 07:50:01