Switch multiple case statement

Solution 1:

This format is shown in the PHP docs:

switch (i) {
    case 1:
    case 3:
        code block A;
        break;
    case 2:
        code block B;
        break;
    default:
        code block default;
        break;
}

EDIT 04/19/2021:

With the release of PHP8 and the new match function, it is often a better solution to use match instead of switch.

For the example above, the equivalent with match would be :

$matchResult = match($i) {
    1, 3    => // code block A
    2       => // code block B
    default => // code block default
}

The match statement is shorter, doesn't require breaks and returns a value so you don't have to assign a value multiple times.

Moreover, match will act like it was doing a === instead of a ==. This will probably be subject to discussion but it is what it is.

Solution 2:

Something like this

switch(i) {
    case 1:
    case 3:  {code block A; break;}

    case 2:  {code block b; break;}

    default: {code block default; break;}
}

Solution 3:

Something like

    $i = 10;
    switch($i){
        case $i == 1 || $i > 3:
            echo "working";
            break;
        case 2:
            echo "i = 2";
            break;
        default: 
          echo "i = $i";
          break;
    }