切换声明。使用默认情况

时间:2014-07-12 20:01:33

标签: php

我每周有3天:周一,周三,周五 对于他们每个人我都有一个号码。我需要做一个能给我这个号码的开关但是如果今天是星期六,我在我的开关语句中没有宣布任何东西,所以我需要的是周五的号码。

<?php
$x = date('d');
class week {
    const Mon1 = 7;
    const Wen1 = 2;
    const Fri1 = 4;

    const Mon2 = 14;
    const Wen2 = 9;
    const Fri2 = 11;

    const Mon3 = 21;
    const Wen3 = 16;
    const Fri3 = 18;

    const Mon4 = 28;
    const Wen4 = 23;
    const Fri4 = 25;

    const Wen5 = 30;
}

switch ($x){
case week::Fri1:
    echo "Results 11111"; break;
case week::Fri2:
    echo "Results 22222"; break;

default:

break;
}; ?>

今天是星期六。 我需要默认抛出Fri2,因为Fri2案例是最后一个valid案例。

周日,我需要的是周五的结果。

周四我将需要上周三的结果,依此类推。

有没有办法使用switch语句? 如果没有,你会用什么来做这件事?

2 个答案:

答案 0 :(得分:2)

编辑: 如果我理解正确,您需要作为默认值,即今天的最后一个工作日。

也许你可以使用类似的东西:

switch(date('w')) {
    case 0:
    case 6:
        $foo = week::Fri2;
        break;
    default:
        $foo = 'your logic'; 
        break;
}

你可以使用:

switch ($x){
    case week::Fri1:
        echo "Results 11111"; 
        break;
    case week::Fri2:
    default:
        echo "Results 22222"; 
        break;
}

答案 1 :(得分:2)

如果我了解您要执行的操作,您只需移动要匹配的案例旁边的default:标签。

因为casedefault标记了案例的开头,然后代码继续到下一个break,将其中几个堆叠在一起就意味着它们都运行了相同的代码。

请注意,default甚至不需要是最后一个标签,而是switch中的任何位置。

switch($x) {
    case week::Fri1:
        echo "Results 11111"; 
    break;
    case week::Fri2:
    default:
        echo "Results 22222"; 
    break;
}

(请注意,为了清楚起见,我稍微重新格式化了代码。有些人会将break语句与代码缩进,但我更喜欢使用case / {{缩进1}},所以控制流程一目了然。)