php - 以日期为键排序数组

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)

我怎么能按键排序这个数组.谢谢.

小智 27

使用该格式的日期,按字母顺序进行比较就可以了.使用PHP函数ksort.

ksort($arr);
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)


Mar*_*lik 6

就这一行代码:

ksort($arr);
Run Code Online (Sandbox Code Playgroud)