开关案例 - 并非所有案例都有效

时间:2012-02-20 15:16:01

标签: php switch-statement

目前我正在写日历。根据选择的motn($monthnum),我将缩写的月份名称($monthabbr)存储在数据库中。为此,我使用了一个switch-case结构。它适用于所有月份,但08年8月和9月至9月除外。由于我在所有月份都使用相同的代码,因此我不知道它为什么不起作用。我很接近边缘重新开始,但在此之前,我会更好地询问你是否看到错误。

switch( $monthnum ) {
            case 01:
                $monthabbr = 'Jan';
                break;
            case 02:
                $monthabbr = 'Feb';
                break;
            case 03:
                $monthabbr = 'Mär';
                break;
            case 04:
                $monthabbr = 'Apr';
                break;
            case 05:
                $monthabbr = 'Mai';
                break;
            case 06:
                $monthabbr = 'Jun';
                break;
            case 07:
                $monthabbr = 'Jul';
                break;
            case 08:
                $monthabbr = 'Aug';
                break;
            case 09:
                $monthabbr = 'Sep';
                break;
            case 10:
                $monthabbr = 'Okt';
                break;
            case 11:
                $monthabbr = 'Nov';
                break;
            case 12:
                $monthabbr = 'Dez';
                break;
}

3 个答案:

答案 0 :(得分:10)

0102,...,09改为12,...,9(丢弃零(。)。


通过使用0启动整数文字表示它应该被解释为八进制数(基数为8的数字)。

对于八进制数字,数字89是非法的。

进一步阅读:


(顺便说一下,您可能需要考虑使用数组或从整数到字符串的地图,然后使用类似monthAbbrs[$monthnum]的内容查找字符串)

答案 1 :(得分:1)

您可以使用引号

来避免此问题
switch($date){
    case "01": $month = "January"; break;
    case "02": $month = "February"; break;
    case "03": $month = "March"; break;
    case "04": $month = "April"; break;
    case "05": $month = "May"; break;
    case "06": $month = "June"; break;
    case "07": $month = "July"; break;
    case "08": $month = "August"; break;
    case "09": $month = "September"; break;
    case "10": $month = "October"; break;
    case "11": $month = "November"; break;
    case "12": $month = "December"; break;
}

答案 2 :(得分:0)

我不知道目的是什么,但更好的方法是解析你的日期

$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
$phpdate = strtotime( $mysqldate );

请参阅here

然后按照您喜欢的方式对其进行格式化:

// Prints something like: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');

请参阅here