Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать замену значений

гимес Профи (537), закрыт 5 лет назад
Есть функция обработки даты из БД. Её код:
$_monthsList = array(".01." => "января", ".02." => "февраля",
".03." => "марта", ".04." => "апреля", ".05." => "мая", ".06." => "июня",
".07." => "июля", ".08." => "августа", ".09." => "сентября",
".10." => "октября", ".11." => "ноября", ".12." => "декабря");
$date = date("d. m. Y", strtotime($date));
$_mD = date(".m.");
$date = str_replace($_mD, " ".$_monthsList[$_mD]." ", $date);
return $date;
По идее должна быть подмена числа месяца на название, но её нет, т. к. выводит в виде 15. 03. 2018
Дополнен 5 лет назад
В итоге вышло так:
$monthes = array(
1 => 'Января', 2 => 'Февраля', 3 => 'Марта', 4 => 'Апреля',
5 => 'Мая', 6 => 'Июня', 7 => 'Июля', 8 => 'Августа',
9 => 'Сентября', 10 => 'Октября', 11 => 'Ноября', 12 => 'Декабря'
);
return $date = (date('d ', strtotime($date)) . $monthes[(date('n', strtotime($date)))] . date(' Y', strtotime($date)));

Спасибо вам, а то голову сломал уже.
Лучший ответ
Imobilazer Искусственный Интеллект (222438) 5 лет назад
d. m. Y
У тебя пробелы, поэтому .m. и не находит
гимесПрофи (537) 5 лет назад
Вот я дурень, всё заработало, выводит как надо. Спасибо.
Imobilazer Искусственный Интеллект (222438) Но кода реально лишнего есть, вот так попроще: $monthes = array( 1 => 'Января', 2 => 'Февраля', 3 => 'Марта', 4 => 'Апреля', 5 => 'Мая', 6 => 'Июня', 7 => 'Июля', 8 => 'Августа', 9 => 'Сентября', 10 => 'Октября', 11 => 'Ноября', 12 => 'Декабря' ); echo(date('d ') . $monthes[(date('n'))] . date(' Y'));
Остальные ответы
Danil Мыслитель (6795) 5 лет назад
зачем столько лишнего кода???
гимесПрофи (537) 5 лет назад
А как можно уменьшить?
Danil Мыслитель (6795) у вас на входе дата в виде переменной $date, вероятно выглядящая в так называемом англоязычном формате. После чего вы ее преобразовываете в "день. месяц. год". задача - преобразовать месяц в числовом виде в русскоязычное его значение. однако в переменной $_mD вы получаете значение ТЕКУЩЕГО месяца, после чего в функции замены строки пытаетесь заменить значение на соответствующий элемент объявленного ассоциативного массива с значениями месяцев. соответственно вопрос - вы уверены, что нужно менять значение месяца в случае если месяц в исходной переменной - текущий?
Похожие вопросы