PHP:switch语句出现问题(错误返回)

时间:2019-01-24 10:18:42

标签: php switch-statement

我有这种方法:

private function convertStatusStringToIntZeroOrOne(string $status)
{

    $status = strtolower($status);

    switch ($status) {

        case "off":
        case "0":
        case 0:
            $int_status = 0;
            break;

        case "on":
        case "1":
        case 1:
            $int_status = 1;
            break;

        default:
            $int_status = 1;
            break;


    }

    return $int_status;
}

$status参数,当字符串“ On”(O字母大写)为字符串时,返回0(零)。

当然,我需要返回1。

谢谢

1 个答案:

答案 0 :(得分:6)

由于switch选项中的数字为0和1,因此它使用的是数字比较-数字“开”为0,因此与0匹配。

由于参数的类型为string,因此数字将转换为字符串,因此请删除数字比较...

function convertStatusStringToIntZeroOrOne(string $status)
{
    $status = strtolower($status);

    switch ($status) {
        case "off":
        case "0":
            $int_status = 0;
            break;
        case "on":
        case "1":
            $int_status = 1;
            break;
        default:
            $int_status = 1;
            break;
    }

    return $int_status;
}
echo convertStatusStringToIntZeroOrOne("On");

尽管您可以将功能简化为...

function convertStatusStringToIntZeroOrOne(string $status)
{
    $status = strtolower($status);
    return ($status == "off" || $status == 0)?0:1;
}