我有这个数组,我想按日期按升序排序。我尝试了这个网站的各种答案,但没有一个正常工作。那我怎么能这样做呢?
Array
(
[0] => 09/01/2017
[1] => 08/01/2017
[2] => 07/01/2017
[3] => 06/01/2017
[4] => 05/01/2017
[5] => 04/01/2017
[6] => 03/01/2017
[7] => 02/01/2017
[8] => 01/01/2017
[9] => 12/12/2016
[10] => 11/12/2016
[11] => 10/12/2016
[12] => 09/12/2016
[13] => 25/12/2016
[14] => 24/12/2016
[15] => 23/12/2016
[16] => 26/12/2016
[17] => 28/12/2016
[18] => 30/12/2016
[19] => 29/12/2016
[20] => 22/12/2016
[21] => 27/12/2016
[22] => 15/12/2016
[23] => 16/12/2016
[24] => 14/12/2016
[25] => 13/12/2016
[26] => 17/12/2016
[27] => 18/12/2016
[28] => 20/12/2016
[29] => 19/12/2016
[30] => 21/12/2016
)
我正在使用PHP。这是我到目前为止所尝试的。这个功能并没有像所有其他问题中提到的那样排序。
$data = array listed above;
function cmp($a, $b)
{
if (strtotime($a) == strtotime($b))
{
return 0;
}
return (strtotime($a) < strtotime($b)) ? -1 : 1;
}
uasort($data, "cmp");
答案 0 :(得分:3)
对于您而言,字符串为dd/mm/yy
类型,strtotime
或date_create
无法直接使用。您可以使用DataTime
创建datetime
,然后使用datetime
比较运算符。
usort($array, function($a, $b){return DateTime::createFromFormat('d/m/Y', $a) > DateTime::createFromFormat('d/m/Y', $b);});
答案 1 :(得分:0)
$document_list = array( array );
$document_list= array_map(function($v) {
return date('Y-m-d', strtotime($v));
}, $document_list);
function sortByDate($a, $b) {
return strtotime($b) - strtotime($a);
}
usort($document_list, "sortByDate");
$document_list= array_map(function($v) {
return date('m-d-Y', strtotime($v));
}, $document_list);
答案 2 :(得分:0)
function desc_date_sort($a, $b){
$date1ts = DateTime::createFromFormat('d/m/Y', $a);
$date2ts = DateTime::createFromFormat('d/m/Y', $b);
return $date1ts === $date2ts ? 0 : ( $date1ts < $date2ts ? 1 : -1 );
}
usort($dates_array, 'desc_date_sort');
答案 3 :(得分:0)
function cmp($a,$b){
return strtotime($a['created'])<strtotime($b['created'])?1:-1;
};
// $array pass your array name
uasort($array,'cmp');