PHP 5.6.3(xamp,Laravel 5)swith-case构建中的错误?

Kam*_*ski -2 php laravel-5

为何功能:

function wtf($dH)
{
    switch ($dH)
    {
        case ($dH >= 0.0 && $dH < 1.0):
            echo '$dH>=0';
            break;
        case ($dH >= 1.0 && $dH < 2.0):
            echo '$dH>=1';
            break;
        case ($dH >= 2.0 && $dH < 3.0):
            echo '$dH>=2';
            break;
        case ($dH >= 3.0 && $dH < 4.0):
            echo '$dH>=3';
            break;
        case ($dH >= 4.4 && $dH < 5.0):
            echo '$dH>=0';
            break;
        case ($dH >= 5.0 && $dH < 6.0):
            echo '$dH>=5';
            break;
        default:
            echo '$dH>=6';
            break;
    }
}
wtf(0.0);
Run Code Online (Sandbox Code Playgroud)

在调用之后它返回:"$ dH> = 1"0.0

???

这是错误的答案,因为它应该返回第一种情况:"$ dH> = 0".

???

我发现这个结构:https://gist.github.com/Jadzia626/2323023

Bla*_*aat 5

switch语句与多个if语句相同.
但是......你不需要重新输入if语句,你在这里做什么.

你有两个选择: - 或者
你检查一个bool - 或者
你用if编写所有内容

因为你已经有了一个开关,我选择了这个片段中的第一个:

private function wtf($dH)
{
    switch (true)
    {
        case ($dH >= 0.0 && $dH < 1.0):
            dd('$dH>=0', $dH);
            break;
        case ($dH >= 1.0 && $dH < 2.0):
            dd('$dH>=1', $dH);
            break;
        case ($dH >= 2.0 && $dH < 3.0):
            dd('$dH>=2', $dH);
            break;
        case ($dH >= 3.0 && $dH < 4.0):
            dd('$dH>=3', $dH);
            break;
        case ($dH >= 4.0 && $dH < 5.0):
            dd('$dH>=4', $dH);
            break;
        case ($dH >= 5.0 && $dH < 6.0):
            dd('$dH>=5', $dH);
            break;
        default:
            dd('$dH>=6', $dH);
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,case如果输出为真,您将检查每个输出是否为真,这应该适用于您的代码段.