Switch Case - не все случаи работают - PullRequest
3 голосов
/ 20 февраля 2012

На данный момент я пишу календарь. В соответствии с выбранным motn ($monthnum) я сохраняю сокращенное название месяца ($monthabbr) в базе данных. Для этого я использую конструкцию switch-case. Работает все месяцы, кроме 08 августа и 09 сентября. Поскольку я использовал один и тот же код все месяцы, я не знаю, почему он не работает. Я близко к краю, чтобы начать все сначала, но перед этим лучше спросить, видите ли вы ошибку.

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 ]

10 голосов
/ 20 февраля 2012

Измените 01, 02, ..., 09 на 1, 2, ..., 9 (сбросьте нули).


Начало целочисленного литерала с 0 означает, что его следует интерпретировать как восьмеричное число (число в основании 8).

Для восьмеричных чисел цифры 8 и 9 недопустимы.

Дополнительная информация:


(Кстати, вы можете рассмотреть , используя массив или карту от целого числа до строки , и просто найдите строку, используя что-то вроде monthAbbrs[$monthnum])

1 голос
/ 13 сентября 2012

Вы можете избежать этой проблемы, используя кавычки

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;
}
0 голосов
/ 20 февраля 2012

Я не знаю, какова цель, но лучше разобрать вашу дату

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

см. здесь

, а затем отформатируйте его так, как вам нравится:

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

см. здесь

...