-1
Array
(
    [0] => 01_January_2020
    [1] => 02_December_2019
    [2] => 02_January_2020
    [3] => 03_December_2019
    [4] => 03_January_2020
    [5] => 04_December_2019
    [6] => 04_January_2020
    [7] => 05_December_2019
    [8] => 05_January_2020
    [9] => 06_December_2019
    [10] => 06_January_2020
    [11] => 07_December_2019
    [12] => 07_January_2020
    [13] => 08_December_2019
    [14] => 08_January_2020
    [15] => 09_December_2019
    [16] => 09_January_2020
    [17] => 10_December_2019
    [18] => 10_January_2020
    [19] => 11_December_2019
    [20] => 11_January_2020
    [21] => 12_December_2019
    [22] => 12_January_2020
    [23] => 13_December_2019
    [24] => 13_January_2020
    [25] => 14_December_2019
    [26] => 14_January_2020
    [27] => 15_December_2019
    [28] => 15_January_2020
    [29] => 16_December_2019
    [30] => 16_January_2020
    [31] => 17_December_2019
    [32] => 17_January_2020
    [33] => 18_December_2019
    [34] => 18_January_2020
    [35] => 19_December_2019
    [36] => 19_January_2020
    [37] => 20_December_2019
    [38] => 20_January_2020
    [39] => 21_December_2019
    [40] => 22_December_2019
    [41] => 23_December_2019
    [42] => 24_December_2019
    [43] => 25_December_2019
    [44] => 26_December_2019
    [45] => 27_December_2019
    [46] => 28_December_2019
    [47] => 29_December_2019
    [48] => 30_December_2019
    [49] => 31_December_2019
)

This is my array and I want to be sorted by month and date wise like

01_December_2019
02_December_2019.. 
and all

I tried so many methods but I didn't get any result. Can anyone help me out how to do this?

Qirel
  • 25,449
  • 7
  • 45
  • 62
Mohammed
  • 43
  • 1
  • 7

2 Answers2

0

You can create your own sort-function by using usort() and a callback that creates datetime objects from that format (since d_F_Y isn't a recognized format, you have to use createFromFormat()). Once you have a proper datetime object, you compare them, and put them in the correct order (which is easily done by comparing timestamps, format("U")).

usort($yourArray, function($a, $b) {
    $format = "d_F_Y";
    $a = DateTime::createFromFormat($format, $a);
    $b = DateTime::createFromFormat($format, $b);
    return $a->format("U") - $b->format("U");
});
Qirel
  • 25,449
  • 7
  • 45
  • 62
0

$arr_dates is your date array

$final_date = array();
foreach ($arr_dates as $str_date) {
    /* to remove underscore ( _ ) */
    $date = str_replace('_', ' ', $str_date); 
    $final_date[strtotime($date)] = $date;
}
ksort($final_date);
echo '<pre>';
print_r($final_date);

Hope this will help you.

Karthik Sekar
  • 625
  • 4
  • 7