php 按Ymd格式的键对数组排序,键不带分隔符[重复]

csbfibhn  于 2023-02-21  发布在  PHP
关注(0)|答案(3)|浏览(91)
    • 此问题在此处已有答案**:

How to sort an array by keys in an ascending direction?(3个答案)
6个月前关闭。
我有一个数组,键是这种格式的date。

$arr = array(

    "20110805" => "2",
    "20100703" => "5",
    "20110413" => "3",
    "20100805" => "4",
    "20100728" => "6",
    "20090416" => "7",
    "20080424" => "8",
    "20110819" => "1",  
);

如何按键对数组排序?

j2datikz

j2datikz1#

对于这种格式的日期,按字母顺序比较就可以了。使用PHP函数ksort

ksort($arr);
ghhkc1vu

ghhkc1vu2#

一个稍微复杂一点的解决方案是基于uksort函数的,但适用于几乎所有的日期格式
首先我们定义一个比较两个日期的callback function(比较器):

function compare_date_keys($dt1, $dt2) {
    return strtotime($dt1) - strtotime($dt2);
}

现在我们可以使用刚刚定义的函数作为uksort中的第二个参数,如下例所示:

uksort($arr, "compare_date_keys");

因此,该函数将把键视为日期,并按升序对数组排序(最近的排在前面)。
注意,我们可以很容易地调整比较器来支持不同的用例,例如,按日期降序排序(最近的排在前面)可以通过简单地将函数的返回表达式替换为以下表达式来实现:

return strtotime($dt2) - strtotime($dt1);
wlzqhblo

wlzqhblo3#

只有这一行代码:

ksort($arr);

相关问题