我有一个以键为日期的数组,格式为:
$arr = array(
"20110805" => "2",
"20100703" => "5",
"20110413" => "3",
"20100805" => "4",
"20100728" => "6",
"20090416" => "7",
"20080424" => "8",
"20110819" => "1",
);
如何按键对数组进行排序?
对于该格式的日期,按字母顺序进行比较就可以了。使用PHP函数ksort
ksort($arr);
一个稍微复杂一点的解决方案是基于uksort函数的,尽管几乎适用于任何日期格式。
首先定义一个回调函数来比较两个日期(comparator):
function compare_date_keys($dt1, $dt2) {
return strtotime($dt1) - strtotime($dt2);
}
现在我们可以使用刚刚定义的函数作为uksort的第二个参数,如下例所示:
uksort($arr, "compare_date_keys");
因此,函数将键作为日期处理,并按升序对数组进行排序(较近期的优先)。
注意,我们可以很容易地调整比较器来支持不同的用例。例如,按日期降序排序(最近的在前)可以通过简单地用以下语句替换函数的返回表达式来实现:
return strtotime($dt2) - strtotime($dt1);
就这一行代码:
ksort($arr);