首页 > 解决方案 > 开关盒不适用于负检查

问题描述

我不知道为什么我的 switch case 没有执行

$t1 = $nextFeed;
$t2 = date("m/d/Y h:i:s a", time());

$timeLeftTowardNextFeed = strtotime($t1) - strtotime($t2); 
$timeLeftTowardNextFeed = $timeLeftTowardNextFeed / ( 60 * 60 );


dd($timeLeftTowardNextFeed); // -6.0533333333333


switch (true) {
    case $timeLeftTowardNextFeed > 1:
    $timleftColor = '#00ff5c';
    break;

    case $timeLeftTowardNextFeed < 1:
    $timleftColor = '#ffc51b';
    break;

    case $timeLeftTowardNextFeed < 0:
    $timleftColor = '#c12222'; <<-------------------------------------------------- should executed 
    break;

    default:
    $timleftColor = 'white';
    break;
}

// -6.0533333333333
if($timeLeftTowardNextFeed < 0){
    dd("HERE"); // It ran 
}

所以你可以看到..如果工作,但开关没有。

值为负

我错过了什么?

标签: php

解决方案


缺少一个条件> 0 不满足第二种情况...

switch (true) {
    case $timeLeftTowardNextFeed > 1:
    $timleftColor = '#00ff5c';
    break;

    case $timeLeftTowardNextFeed < 1 && $timeLeftTowardNextFeed >=0:
    $timleftColor = '#ffc51b';
    break;

    case $timeLeftTowardNextFeed < 0:
    $timleftColor = '#c12222';
    break;

    default:
    $timleftColor = 'white';
    break;
}

推荐阅读