我有一个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的标准使用不会起作用。如何根据数组元素值将此数组按月分类?
答案 0 :(得分:1)
您需要定义一个自定义函数来对数组进行排序
function sortByDate($a, $b) {
return strtotime($a) - strtotime($b);
}
usort($testar, 'sortByDate');
我从这个one
得出了答案答案 1 :(得分:0)
你是对的asort
不按时间顺序对这几个月进行排序,而是按字母顺序排列。如果您有能力,一个选项是操纵数据以使用月份的数字表示而不是字符串,然后使用开箱即用的asort
。或者,您可以编写自己的排序函数,将名称的字符串表示形式映射到数字表示形式,然后按这种方式对它们进行排序。