首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何按日期键对数组进行排序?

如何按日期键对数组进行排序?
EN

Stack Overflow用户
提问于 2019-04-02 10:59:26
回答 4查看 254关注 0票数 1

我有一个键为"Y-m“格式的数组。我想根据这个键对这个数组进行排序。

代码语言:javascript
运行
复制
$array = array(
  "2018-10" => 239,
  "2018-11" => 264,
  "2018-12" => 237,
  "2019-01" => 211,
  "2019-04" => "0",
  "2019-03" => "0",
  "2019-02" => "0"
);

我的最终结果应该是:

代码语言:javascript
运行
复制
$array = array(
  "2019-04" => "0",
  "2019-03" => "0",
  "2019-02" => "0",
  "2019-01" => 211,
  "2018-12" => 237,
  "2018-11" => 264,
  "2018-10" => 239
);

这是到目前为止我已经尝试过的代码。

代码语言:javascript
运行
复制
$sorter = function($a, $b) {
            if (strtotime($a) == strtotime($b)) {
                return 0;
            }
            return (strtotime($a) < strtotime($b)) ? -1 : 1;
        };

        uksort($array, $sorter);
EN

回答 4

Stack Overflow用户

发布于 2019-04-02 11:05:50

我认为您可以使用krsort() php函数来做类似的事情

代码语言:javascript
运行
复制
$array = array(
  "2018-10" => 239,
  "2018-11" => 264,
  "2018-12" => 237,
  "2019-01" => 211,
  "2019-04" => "0",
  "2019-03" => "0",
  "2019-02" => "0"
);
krsort($array);

工作示例:- https://3v4l.org/LqKa6

票数 3
EN

Stack Overflow用户

发布于 2019-04-02 11:15:34

代码语言:javascript
运行
复制
<?php

$array = array(
  "2018-10" => 239,
  "2018-11" => 264,
  "2018-12" => 237,
  "2019-01" => 211,
  "2019-04" => "0",
  "2019-03" => "0",
  "2019-02" => "0"
);

$date_keys = array_keys($array);

usort($date_keys,function($date1,$date2){
    $date_1 = new DateTime($date1);
    $date_2 = new DateTime($date2);
    if($date_1 > $date_2) return -1;
    else if($date_1 < $date_2) return 1;
    return 0;
});


$rearranged_data = [];
foreach($date_keys as $each_key){
    $rearranged_data[$each_key] = $array[$each_key];
}

$array = $rearranged_data;
print_r($array);

使用array_keys().

  • Second,检索日期值首先,使用usort()对这些日期值进行排序,方法是将这些数据转换为DateTime对象,并使用比较和新数组进行比较,遍历这些排序的日期并填充值。

  • 最后,将重新排列的数据重新分配给原始数组。
票数 1
EN

Stack Overflow用户

发布于 2019-04-02 12:55:24

ksort()函数根据键以升序对关联数组进行排序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55466349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档