PHP案例不适用于整数

时间:2015-11-21 13:34:52

标签: php

我的php代码中有一个奇怪的案例问题;

$sm_hours = (int)$sm_hours;  // Make it an integer

echo $sm_hours;  // is 206

    switch ($sm_hours) {
        case ($sm_hours = 0 && $sm_hours <= 120):
            echo "One";
        break;
        case ($sm_hours >= 121 && $sm_hours <= 240):
            echo "Two";
        break;
        case ($sm_hours >= 241):
            echo "Three";
        break;
    }

$ sm_hours是206,但我得到的回声是One not Two。我错过了什么?

由于

6 个答案:

答案 0 :(得分:1)

您将始终跳转到第一个开关案例,因为您将$sm_hours设置为0.单个=用于设置变量。

要测试其值,请使用==执行type juggling,或使用===来测试该类型。

答案 1 :(得分:1)

 case ($sm_hours == 0 && $sm_hours <= 120):

您正在使用相等运算符

答案 2 :(得分:1)

在第一种情况下,试试这个:

case ($sm_hours == 0 && $sm_hours <= 120):
    echo "One";
break;

答案 3 :(得分:1)

在你的案例中更好地使用if和elseif语句:

$sm_hours = (int)$sm_hours;  // Make it an integer
echo $sm_hours;  // is 206

if ($sm_hours >= 0 && $sm_hours <= 120)
    echo "One";
elseif ($sm_hours >= 121 && $sm_hours <= 240)
    echo "Two";
else
    echo "Three";

开关只是尝试匹配精确值。

答案 4 :(得分:0)

尝试

 $sm_hours >= 0 && $sm_hours <=120

答案 5 :(得分:0)

好的,所以考虑到$ sm_hours&lt;正如阿南德所指出的那样。此代码适用于我需要的所有选项。

     switch ($sm_hours) {
        case ($sm_hours >= 121 && $sm_hours <= 240):
            echo "Two";
        break;
        case ($sm_hours >= 241):
            echo "Three";
        break;
        default:
            echo "One";
        break;
     }