-5

我想按日期对数组进行排序。

我使用下面的代码对数组进行排序

<?php
$a=array("14-10-2013","15-10-2013","16-10-2013","13-11-2013","17-11-2013","18-10-2013","19-10-2013");
array_multisort($a);
print_r($a);
?>

这给了我结果

Array ( [0] => 13-11-2013 [1] => 14-10-2013 [2] => 15-10-2013 [3] => 16-10-2013 [4] => 17-11-2013 [5] => 18-10-2013 [6] => 19-10-2013 ) 

这不是正确的顺序。

正确的顺序应该是

Array ( [0] => 14-10-2013 [1] => 15-10-2013 [2] => 16-10-2013 [3] => 18-10-2013 [4] => 19-10-2013 [5] => 13-11-2013 [6] => 17-11-2013 ) 

为了正确的日期顺序,我应该怎么做?

4

2 回答 2

2

使用此代码:

$a=array("14-10-2013","15-10-2013","16-10-2013","13-11-2013","17-11-2013","18-10-2013","19-10-2013");

usort($a, "sortFunction");

print_r($a);

function sortFunction( $a, $b ) {
    return strtotime($a) - strtotime($b);
}

OUTPUT


Array
(
    [0] => 14-10-2013
    [1] => 15-10-2013
    [2] => 16-10-2013
    [3] => 18-10-2013
    [4] => 19-10-2013
    [5] => 13-11-2013
    [6] => 17-11-2013
)
于 2013-10-07T13:13:52.733 回答
0

您在这里有几个选择。反转日期:例如 2013-11-13。您正在对字符串进行排序。所以它从最小的数字开始。这仅在您有年-月-日时才有效。

您还可以使用时间戳。因此,从时间戳中,对所有值进行排序。之后使用:

foreach($a as $key => $value) {
  $a[$key] = date("d-m-Y", $value);
}
print_r($a);
于 2013-10-07T13:10:26.800 回答