PHP-按月份和年份对数组排序

PHP-按月份和年份对数组排序,php,arrays,sorting,date,Php,Arrays,Sorting,Date,这是我的阵列: $ar = array( 'Jan-2016' => 1, 'Feb-2016' => 2, 'Mar-2016' => 3, 'Apr-2016' => 4, 'May-2016' => 4, 'Jun-2016' => 4, 'Jul-2016' => 4, 'Aug-2016' => 4, 'Sep-2016' => 4, 'Oct-2016' => 4, 'Nov-2016' =>

这是我的阵列:

$ar = array( 
 'Jan-2016' => 1,
 'Feb-2016' => 2,
 'Mar-2016' => 3,  
 'Apr-2016' => 4,
 'May-2016' => 4,
 'Jun-2016' => 4,
 'Jul-2016' => 4,
 'Aug-2016' => 4,
 'Sep-2016' => 4,
 'Oct-2016' => 4,
 'Nov-2016' => 4,
 'Dec-2016' => 4,
 'Jan-2015' => 1,
 'Mar-2015' => 1);
我想按月份和年份对该数组进行排序。我尝试了以下代码:

ksort($ar);
但我不能得到我预期的结果

我需要的结果如下:

$ar = array(
 'Jan-2015' => 1,
 'Mar-2015' => 1,
 'Jan-2016' => 1,
 'Feb-2016' => 2,
 'Mar-2016' => 3,  
 'Apr-2016' => 4,
 'May-2016' => 4,
 'Jun-2016' => 4,
 'Jul-2016' => 4,
 'Aug-2016' => 4,
 'Sep-2016' => 4,
 'Oct-2016' => 4,
 'Nov-2016' => 4,
 'Dec-2016' => 4);
uksort是正确使用的函数:

uksort($ar, function($a1, $a2) {
        $time1 = strtotime($a1);
        $time2 = strtotime($a2);

        return $time1 - $time2;
    });

print_r($ar);
uksort是正确使用的函数:

uksort($ar, function($a1, $a2) {
        $time1 = strtotime($a1);
        $time2 = strtotime($a2);

        return $time1 - $time2;
    });

print_r($ar);
补充:排序顺序

$sortOrder = true;  // ASC
$sortOrder = false; // DESC

uksort($array, function($a, $b) use($sortOrder) {
    $timeA = strtotime($a);
    $timeB = strtotime($b);

    return $sortOrder ? ($timeA - $timeB) : ($timeB - $timeA);
});
补充:排序顺序

$sortOrder = true;  // ASC
$sortOrder = false; // DESC

uksort($array, function($a, $b) use($sortOrder) {
    $timeA = strtotime($a);
    $timeB = strtotime($b);

    return $sortOrder ? ($timeA - $timeB) : ($timeB - $timeA);
});

uksort是您的选项-使用用户定义的比较函数按键对数组进行排序。您能提供代码吗?uksort是您的选项-使用用户定义的比较函数按键对数组进行排序。您能提供代码吗?返回$time1-$time2更简单。@u\u mulder well没有太大变化,但你是对的return$time1-$time2要简单得多。@u\u mulder well变化不大,但你是对的