bha*_*ath 9 php arrays sorting
嗨,这个格式的日期有一个带键的数组.
$arr = array(
"20110805" => "2",
"20100703" => "5",
"20110413" => "3",
"20100805" => "4",
"20100728" => "6",
"20090416" => "7",
"20080424" => "8",
"20110819" => "1",
);
Run Code Online (Sandbox Code Playgroud)
我怎么能按键排序这个数组.谢谢.
Sal*_*lli 10
一个稍微复杂的解决方案基于uksort函数,但它几乎适用于任何日期格式。
首先我们定义一个比较两个日期的回调函数(比较器):
function compare_date_keys($dt1, $dt2) {
return strtotime($dt1) - strtotime($dt2);
}
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用刚刚定义的函数作为 uksort 中的第二个参数,如下例所示:
uksort($arr, "compare_date_keys");
Run Code Online (Sandbox Code Playgroud)
因此,该函数会将键视为日期,并按升序对数组进行排序(最近的在前)。
请注意,我们可以轻松调整比较器以支持不同的用例。例如,只需将函数的返回表达式替换为以下内容即可完成按日期降序排序(最近的在前):
return strtotime($dt2) - strtotime($dt1);
Run Code Online (Sandbox Code Playgroud)