Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Некорректная работа оператора switch case

#1 Kuchuluk

Kuchuluk
  • Пользователь
  • 315 сообщений
  • Репутация: 5
0

Отправлено 08 Сентябрь 2014 - 14:37

В базе данных дата добавления статьи у меня хранится в виде 2014-04-16 23:35:23. Написал функцию для отображения ее в виде 16 июня 2014.

function createArticleDate ($date) {
	$da = explode(" ", $date);
		$pere = explode("-", $da[0]);
		switch ($pere[1]) {
		case 01:
			$x = "января";
			break;
		case 02:
			$x = "февраля";
			break;
		case 03:
			$x = "марта";
			break;
		case 04:
			$x = "апреля";
			break;
		case 05:
			$x = "мая";
			break;
		case 06:
			$x = "июня";
			break;
		case 07:
			$x = "июля";
			break;
		case 08:
			$x = "августа";
			break;
		case 09:
			$x = "сентября";
			break;
		case 10:
			$x = "октября";
			break;
		case 11:
			$x = "ноября";
			break;
		case 12:
			$x = "декабря";
			break;
		}
		$event = $pere[2] . " " . $x . " " . $pere[0];
		
		return $event;
 }

И дату эта функция выводит как надо, но только до августа. Начиная с августа дата выводится так 08 2014. То есть в переменную $x ничего не попадает. Проверял переменную $pere[1], в нее попадает число 08, но почему то в переменную $x попадает пустота.


 

 

Сообщение отредактировал Kuchuluk: 08 Сентябрь 2014 - 14:38

  • 0

#2 MelnikovXYZ

MelnikovXYZ
  • Пользователь
  • 2 сообщений
  • Репутация: 1

Отправлено 03 Октябрь 2014 - 19:29

Все потому, что числа, начинающиеся с 0 PHP воспринимает как 8ричные, поэтому 08 - некорректное число. Вам следует в ваших case'ах числа заключить в кавычки.


  • 1

#3 Ixman

Ixman
  • Пользователь PRO
  • 2 165 сообщений
  • Репутация: 436

Отправлено 04 Октябрь 2014 - 09:29

Kuchuluk, а не проще ли в базе хранить в UNIX формате, а уже использовать в скрипте через функцию date(); ? И база меньше и использовать можно в любом доступном виде 


  • 0


Оформление форума – IPBSkins.ru