За последние 24 часа нас посетили 22789 программистов и 1269 роботов. Сейчас ищут 793 программиста ...

Отсортировать массив с датами

Тема в разделе "PHP для новичков", создана пользователем DS32, 13 окт 2020.

  1. DS32

    DS32 Новичок

    С нами с:
    13 окт 2020
    Сообщения:
    10
    Симпатии:
    0
    Как отсортировать массив с датами там где месяц и год. После сортировки хочу построить сравнительную диаграмму по годам. Данные берутся из БД и в json поступают в библиотеку
    bar chart2 (Morris Bar). Ничего не выходит пока что. Часть массива разместил ниже. К каждому месяцу ещё идут цифровые значения.
    Исходный массив:
    2002-01
    2002-02
    2002-03
    2002-04
    2002-05
    2002-06
    2002-07
    2002-08
    2002-09
    2002-10
    2002-11
    2002-12
    2003-01
    2003-02
    2003-03
    2003-04
    2003-05
    2003-06
    2003-07
    2003-08
    2003-09
    2003-10
    2003-11
    2003-12
    2004-01
    2004-02
    2004-03
    2004-04
    2004-05
    2004-06
    2004-07
    2004-08
    2004-09
    2004-10
    2004-11
    2004-12
    Отсортированный массив хочу получить на выходе:
    2002-01
    2003-01
    2004-01
    2002-02
    2003-02
    2004-02
    2002-03
    2003-03
    2004-03
    2002-04
    2003-04
    2004-04
    2002-05
    2003-05
    2004-05
    2002-06
    2003-06
    2004-06
    2002-07
    2003-07
    2004-07
    2002-08
    2003-08
    2004-08
    2002-09
    2003-09
    2004-09
    2002-10
    2003-10
    2004-10
    2002-11
    2003-11
    2004-11
    2002-12
    2003-12
    2004-12
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    737
    Адрес:
    Татарстан
    Раз из бд берете - там и сортируйте

    Order by field asc/deec
     
  3. Grigoriy Kozheletov

    Grigoriy Kozheletov Новичок

    С нами с:
    2 сен 2020
    Сообщения:
    13
    Симпатии:
    5
    Адрес:
    г. Раменское, Московская область
    Если бд mysql такой запрос должен сработать:
    SELECT DATE_FORMAT(Dates, "%Y-%m") FROM Some_table ORDER BY DATE_FORMAT(Dates, "%m"), DATE_FORMAT(Dates, "%Y");
     
    DS32 нравится это.
  4. DS32

    DS32 Новичок

    С нами с:
    13 окт 2020
    Сообщения:
    10
    Симпатии:
    0
    Пришлось немного повозится т.к. поле в varchar было, но преобразовал в date и отлично. Спасибо за обратную связь
     
  5. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Поместить элементы массива, или его ключи, в новый массив в качестве ключей использовав трансформированное значение.
    Разобрав, например. дату на составляющие с помощью explode()
    Например было 2002-01. Стало 01-2002 Или 012002.
    Далее воспользоваться ksort()
     
    DS32 нравится это.