phpswitch-statement

Using comparison operators in a PHP 'switch' statement


I have four conditions that I need to go through and I thought it would be best to use the switch statement in PHP. However, I need to check whether an integer is, let's say, less than or equal, or greater than and equal.

switch ($count) {
    case 20:
        $priority = 'low';
        break;

    case 40:
        $priority = 'medium';
        break;

    case 60:
        $priority = 'high';
        break;

    case 80:
        $priority = 'severe';
        break;
}

With an if() statement it would look like the following:

if ($count <= 20) {
    $priority = 'low';
} elseif ($count <= 40) {
    $priority = 'medium';
} elseif ($count <= 60) {
    $priority = 'high';
} else {
    $priority = 'severe';
}

Is that possible in switch-case?


Solution

  • A more general case for solving this problem is:

    switch (true) {
        case $count <= 20:
            $priority = 'low';
            break;
    
        case $count <= 40:
            $priority = 'medium';
            break;
    
        case $count <= 60:
            $priority = 'high';
            break;
    
        default:
            $priority = 'severe';
            break;
    }
    

    Also, since PHP 8.0 you can use a more concise match operator:

    $priority = match(true) {
        $count <= 20 => 'low',
        $count <= 40 => 'medium',
        $count <= 60 => 'high',
        default => 'severe',
    };