首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按日期键重新组织数组

问按日期键重新组织数组
EN

Stack Overflow用户
提问于 2016-03-06 21:40:18
回答 4查看 153关注 0票数 0

我如何按日期重新组织数组,以便在我使用foreach()时,所有的日期都能按先后顺序排列?

这是我的数组:

代码语言:javascript
复制
$events = array(
"03/06/2016" => array("Random Data 1","Random Data 2"),
"02/15/2016" => array("Random Data 1","Random Data 2"),
"03/07/2016" => array("Random Data 1","Random Data 2")
);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-06 21:50:54

若要对日期进行排序,应将其格式化为Y-m-d。例子: 2016-03-06。

然后使用函数ksort()对键值进行数组排序。

代码语言:javascript
复制
$events = array(
"2016/03/06" => array("Random Data 1","Random Data 2"),
"2016/02/15" => array("Random Data 1","Random Data 2"),
"2016/03/07" => array("Random Data 1","Random Data 2"),
"2015/04/02" => array("Random Data 1","Random Data 2"),
"2015/05/02" => array("Random Data 1","Random Data 2")
);

var_dump($events);
ksort($events);
var_dump($events);

有关日期格式设置,请参阅:http://php.net/manual/en/function.date.php

要排序数组的所有函数,请参阅:http://php.net/manual/en/array.sorting.php

票数 2
EN

Stack Overflow用户

发布于 2016-03-06 22:16:41

我会这样做:

代码语言:javascript
复制
//objectify & reverse
foreach($arr as $key=>$var) {
   $arr2[$var]=new DateTime(substr($key,6,4).'-'.substr($key,0,2).'-'.substr($key,3,2));
}

//sort
asort($arr2);

//re-reverse & format
foreach($arr2 as $key=>$var) {
   $var=date_format($var,'m-d-Y');
   $arr3[$var]=$key;
}

//read
foreach($arr3 as $key=>$var) {
   echo $key.': '.$var;
}
票数 1
EN

Stack Overflow用户

发布于 2016-03-07 09:57:31

我们将分两步进行:

  • 重新格式化数组键
  • 排列数组

让我们来编码!

代码语言:javascript
复制
// Define array
$events = array(
    "03/06/2016" => array("Random Data 1","Random Data 2"),
    "02/15/2016" => array("Random Data 1","Random Data 2"),
    "03/07/2016" => array("Random Data 1","Random Data 2")
);

// New array
$sortedEvents = array();

// Change key date format
foreach ($events as $date => $randomDates) {
    $date = DateTime::createFromFormat('m/d/Y', $date);
    $sortedEvents[$date->format('Ymd')] = $randomDates;
}

// Sort new array
ksort($sortedEvents);

// Output array
var_dump($sortedEvents);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35832954

复制
相关文章

相似问题

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