嗨我有一个数组,其中包含以此格式显示日期的键。
$arr = array(
"20110805" => "2",
"20100703" => "5",
"20110413" => "3",
"20100805" => "4",
"20100728" => "6",
"20090416" => "7",
"20080424" => "8",
"20110819" => "1",
);
如何按键对此数组进行排序。谢谢。
答案 0 :(得分:23)
使用该格式的日期,按字母顺序进行比较就可以了。使用PHP函数ksort。
ksort($arr);
答案 1 :(得分:4)
只需这一行代码:
ksort($arr);
答案 2 :(得分:1)
一个稍微复杂的解决方案,它基于uksort函数,几乎可以用于任何日期格式。
首先,我们定义一个callback function来比较两个日期(比较器):
function compare_date_keys($dt1, $dt2) {
$tm1 = strtotime($dt1);
$tm2 = strtotime($dt2);
return ($tm1 < $tm2) ? -1 : (($tm1 > $tm2) ? 1 : 0);
}
现在,我们可以将刚刚定义的函数用作uksort中的第二个参数,如下例所示:
uksort($arr, "compare_date_keys");
因此,该函数会将键视为日期,并以升序对数组进行排序(从新到旧)。
请注意,我们可以轻松调整比较器以支持不同的用例。例如,只需按以下顺序替换函数的return表达式,即可完成按日期降序排序(从最新到第一个):
return ($tm1 < $tm2) ? 1 : (($tm1 > $tm2) ? -1 : 0);