对日期数组进行排序时出现问题


issue in sorting a date array

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

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

<?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 ) 

对于正确的日期顺序,我应该怎么做?

使用以下代码:

$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-11-13。您正在对字符串进行排序。所以它从最小的数字开始。这仅在您拥有年-月-日时才有效。

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

foreach($a as $key => $value) {
  $a[$key] = date("d-m-Y", $value);
}
print_r($a);