Q:

Using ksort to sort by year and month with php?

This is my php function which returns an array of year, month and associative values
function byCalendarMonth($tmpArray) {
    $output = [];
    foreach ($tmpArray as $value) {
        $year = date('Y', strtotime($value['date']));
        $month = date('M', strtotime($value['date']));

        if (empty($output[$year][$month]))
            $output[$year][$month] = ['Indoor' => 0, 'Gym class' => 0];
        // Check for incident intensity
        $output[$year][$month][$value['category']] += $value['score'];
    }

    ksort($output);
    ksort($output[$year][$month]);
    return $output;
}

and the output looks like
Array
(
    [2016] => Array
        (
            [Dec] => Array
                (
                    [Indoor] => 39
                    [Gym class] => 34
                )

            [Nov] => Array
                (
                    [Indoor] => 56
                    [Gym class] => 41
                )

            [Oct] => Array
                (
                    [Indoor] => 82
                    [Gym class] => 66
                )

            [Sep] => Array
                (
                    [Indoor] => 97
                    [Gym class] => 89
                )

            [Aug] => Array
                (
                    [Indoor] => 74
                    [Gym class] => 78
                )

            [Jul] => Array
                (
                    [Indoor] => 0
                    [Gym class] => 3
                )

            [Jun] => Array
                (
                    [Indoor] => 74
                    [Gym class] => 98
                )

            [May] => Array
                (
                    [Indoor] => 102
                    [Gym class] => 58
                )

            [Apr] => Array
                (
                    [Gym class] => 49
                    [Indoor] => 106
                )

        )

    [2017] => Array
        (

            [Mar] => Array
                (
                    [Indoor] => 67
                    [Gym class] => 53
                )

            [Feb] => Array
                (
                    [Indoor] => 81
                    [Gym class] => 47
                )

            [Jan] => Array
                (
                    [Indoor] => 84
                    [Gym class] => 49
                )

        )

)

But I just need the months to ASC like jan, feb, mar etc??

A:

There are few solutions. 
First. If you know exactly range of years, you can generate empty array with years and months. In this, you will never miss any month. Something like that...
$years = [];
for ($year = 2015; $year <= 2017; $year++ ) {
  $years[$year] = ['Jan' => [], 'Feb' => [], ...];
}

Second. You can replace ksort($output[$year][$month]) to 
$listOfOrderedMonth = ['Jan', 'Feb', ...];

$result = [];
foreach ($output as $year => $months) {
    foreach ($listOfOrderedMonth as $orderedMonth) {
        $result[$year][$orderedMonth] = $months[$orderedMonth];
    }
}

