根据值按月对数组进行排序

时间:2017-10-17 00:55:59

标签: php arrays sorting

我有一个php数组如下 -

$testar = array( 
 '3423sdfskjx' => 'January 2017',
 '1233sd3dkjx' => 'December 2017',
 '1534grfdbfd' => 'March 2017',  
 '5849dj4fodo' => 'April 2017',
 'ndj3058rjei' => 'February 2017',
 'lsdl39430xm' => 'September 2017',
 '059dmejri30' => 'July 2017',
 'mcjd923kd05' => 'November 2017',
 '3409sndfk3k' => 'May 2017',
 '094873uv3jj' => 'June 2017',
 '7859349cmei' => 'October 2017',
 '086u7n3if39' => 'August 2017');

主要是一个随机id和代表某个月值的值。我需要按字母顺序对值进行排序,以便在第一个键值为2017年1月'第二个键值为2017年2月'的情况下重新组织数组。等等。 sort / rsort / asort / ksort的标准使用不会起作用。如何根据数组元素值将此数组按月分类?

2 个答案:

答案 0 :(得分:1)

您需要定义一个自定义函数来对数组进行排序

function sortByDate($a, $b) {
     return strtotime($a) - strtotime($b);
}

usort($testar, 'sortByDate');

我从这个one

得出了答案

答案 1 :(得分:0)

你是对的asort不按时间顺序对这几个月进行排序,而是按字母顺序排列。如果您有能力,一个选项是操纵数据以使用月份的数字表示而不是字符串,然后使用开箱即用的asort。或者,您可以编写自己的排序函数,将名称的字符串表示形式映射到数字表示形式,然后按这种方式对它们进行排序。