Как использовать регистр переключения 'или' в PHP

Есть ли способ использовать оператор "ИЛИ" или его эквивалент в переключателе PHP?

Например, что-то вроде этого:

switch ($value) {

    case 1 || 2:
        echo 'the value is either 1 or 2';
        break;
}

Ответ 1

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

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

Ответ 2

Если вы должны использовать || с 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

Я не буду повторять другие ответы, потому что они все правильные, но я просто добавлю, что вы не можете использовать переключатель для более "сложных" операторов, например: для проверки, если значение "больше 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.

Ответ 4

Попробуйте следующие примеры в этой статье: 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;
}

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

Ответ 5

Try

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

Ответ 6

Я предлагаю вам пройти 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;
}

объяснение

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

Ответ 7

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

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

блок, вызываемый как для 1, так и для 2.

Ответ 8

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

Ответ 9

http://php.net/manual/en/control-structures.switch.php Пример

$today = date("D");

    switch($today){

        case "Mon":

        case "Tue":

            echo "Today is Tuesday or Monday. Buy some food.";

            break;

        case "Wed":

            echo "Today is Wednesday. Visit a doctor.";

            break;

        case "Thu":

            echo "Today is Thursday. Repair your car.";

            break;

        default:

            echo "No information available for that day.";

            break;

    }

Ответ 10

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

Пример:

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

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