Формирование списка месяцев в php

174
08 декабря 2017, 05:23

Можно ли сделать список месяцев со смещением на следующий год?

Есть массив с месяцами:

$monthes = array(
    1 => 'Январь',    2 => 'Февраль',   3 => 'Март',     4 => 'Апрель',
    5 => 'Май',       6 => 'Июнь',      7 => 'Июль',     8 => 'Август',
    9 => 'Сентябрь',  10 => 'Октябрь',  11 => 'Ноябрь',  12 => 'Декабрь'
);

Пример списка в январе 2018:

Январь 2017
...
Декабрь 2017

Пример списка в феврале 2018:

Февраль 2017
...
Декабрь 2017
Январь 2018

В базе есть колонка с месяцем - month и с годом - year. Есть какая-то функция для получения списка месяцев:

function getMonthes() {
  global $monthes;
  foreach ($monthes as $id => $data) {
    $data .=  date(' Y');
    if($id < date('n')) {
      $ret .= "<option value='{$id}'>{$data}</option>";
    }
  }
  return $ret;
Answer 1
$currentMonth = 4;
$currentYear = 2018;
for($i = 0 ; $i < 12; $i++){
    $m = ($i + $currentMonth) % 12 + 1;
    $y = (int) ($currentYear - 1 + ($i + $currentMonth) / 12);
    echo 'year: '.$y.' month: '.$monthes[$m];
}

sandbox

Answer 2
$months = array('Январь', 'Февраль', 'Март', 'Апрель', 'Май',  'Июнь', 
                'Июль', 'Август', 'Сентябрь', 'Октябрь',  'Ноябрь', 'Декабрь'
          );
$dateStr = date("Y-m-d"); // today
$begin = new DateTime($dateStr);
$end = (new DateTime($dateStr))->modify('+12 month');
$periods = new DatePeriod($begin, new DateInterval('P1M'), $end);
// вывод 
echo '<select>';
foreach($periods as $period){
    $num = $period->format("n");
    echo "<option value='{$period->format('Y')}'>{$months[$num - 1]}</option>";    
}
echo '</select>';

http://phpfiddle.org/main/code/5kb3-h2rv

DatePeriod - Представляет временной период. Позволяет перемещаться в заданном временном интервале на равные промежутки времени. В данном случае это интервал от сегодня на год вперед (не включая последний месяц) с интервалом в месяц.

READ ALSO
Notice: Uninitialized string offset: 1572863 in /home/bitrix/ext_www/path.to.site/xls/Classes/PHPExcel/Shared/OLERead.php

Notice: Uninitialized string offset: 1572863 in /home/bitrix/ext_www/path.to.site/xls/Classes/PHPExcel/Shared/OLERead.php

Пробую прочитать excel-файл с помощью библиотеки PHPExcel

148
INSERT SELECT в ту же таблицу

INSERT SELECT в ту же таблицу

Приветствую! Есть задача: вставить в таблицу данные, если два поля в этой таблице не принадлежат условиям(в таблице есть дата прибытия и выезда...

157
Скачивание excel файла c сервера php

Скачивание excel файла c сервера php

На сервере есть файлxlsx кодированный в UTF-8 есть скрипт который отдает его на скачивание пользователю, файл скачанный файл при открытии выдает...

187
vk.api файлы парсер

vk.api файлы парсер

Есть парсер файлов с ВКРаботал два месяца, теперь сломался ( API отдает

148