switch语句不等于零?

Dre*_*din 1 php switch-statement

我有以下功能正常工作,除了你使用输入值为0时我试过去看看0是否等同为NULL或者我做错了什么.

当输入零时,它输出高于20的高级值.任何人都可以解释一下吗?谢谢

我打算让开关等于0-10,11-20,21-30,31-40,41 +但是对于这个例子我只是使用了两个场景.谢谢

**编辑我确实想要值20 :)

function strengthPlan( $data ) {

    $data = ( int ) $data;
    switch( $data ) {
        case( $data <= 19 ):
            $result = 'standard strength';
            break;
        case( $data >= 20 ):
            $result = 'advanced strength';
            break;
    }
    return $result;

}

echo strengthPlan( 0 );
Run Code Online (Sandbox Code Playgroud)

pim*_*vdb 12

你的逻辑不正确.Switch语句正在检查是否相等.您的代码正在检查是否$data等于TRUEFALSE.

 case( $data < 20 ):
Run Code Online (Sandbox Code Playgroud)

将评估为:

 case( TRUE ):
Run Code Online (Sandbox Code Playgroud)

因为0 < 20.

由于0不等于TRUE但是FALSE(转换后),第二种情况是运行的.

基本上,你不能switch case用于<>仅用于==.