在 PHP 'switch' 语句中使用比较运算符

2022-08-30 09:49:30

我有四个条件需要经历,我认为最好在PHP中使用该语句。但是,我需要检查整数是否小于或等于,或者大于和等于。switch

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

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

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

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

使用语句,它如下所示:if()

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

这可能吗?switch-case


答案 1

解决此问题的更一般情况是:

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

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

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

    default:
        $priority = 'severe';
        break;
}

答案 2

交换机不能这样做,但在这种特殊情况下,您可以执行如下操作:

switch ((int)(($count - 1) / 20)) {
    case 0:
        $priority = 'low';
        break;
    case 1:
        $priority = 'medium';
        break;
    case 2:
        $priority = 'high';
        break;
    case 3:
        $priority = 'severe';
        break;
}

因此,在所有值中,从 0 到 20 将评估为 0,21 到 40 将评估为 1,依此类推,允许您将 switch 语句用于此目的。(int)(($count - 1) / 20)

由于我们要连接值,我们甚至可以简化为数组:

$priorities = ['low', 'medium', 'high', 'severe'];
$priority = $priorities[(int)(($count - 1) / 20)];

推荐