【问题标题】:PHP - sort array by month and yearPHP - 按月和年对数组进行排序
【发布时间】:2016-01-07 09:26:04
【问题描述】:

这是我的数组:

$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);

【问题讨论】:

标签: php arrays sorting date


【解决方案1】:

uksort 是正确的函数:

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

        return $time1 - $time2;
    });

print_r($ar);

【讨论】:

  • return $time1 - $time2 要简单得多。
  • @u_mulder 没有太大变化,但你是对的
【解决方案2】:

补充:排序顺序

$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);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2019-01-25
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多