我如何按日期重新组织数组,以便在我使用foreach()时,所有的日期都能按先后顺序排列?
这是我的数组:
$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")
);发布于 2016-03-06 21:50:54
若要对日期进行排序,应将其格式化为Y-m-d。例子: 2016-03-06。
然后使用函数ksort()对键值进行数组排序。
$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
发布于 2016-03-06 22:16:41
我会这样做:
//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;
}发布于 2016-03-07 09:57:31
我们将分两步进行:
让我们来编码!
// 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);https://stackoverflow.com/questions/35832954
复制相似问题