【问题标题】:Sort an array contain dates in php在php中对包含日期的数组进行排序
【发布时间】:2016-03-23 07:18:38
【问题描述】:

我有一个这样的数组,因此我想按日期对这个数组进行排序,如何对这个数组进行排序

Array
(
[0] => 28/02/2016
[1] => 30/01/2016
[2] => 16/02/2016
[3] => 19/02/2016
[4] => 24/02/2016
[5] => 13/02/2016
[6] => 18/02/2016
[7] => 27/02/2016
[8] => 25/02/2016
[9] => 01/02/2016
[10] => 02/02/2016
[11] => 03/02/2016
[12] => 05/02/2016
[13] => 06/02/2016
[14] => 07/02/2016
[15] => 08/02/2016
[16] => 11/02/2016
[17] => 12/02/2016
)

我使用了 usort 但它不起作用,我正在编写一个函数并将其转换为 strtotime 但它不起作用。任何建议。

【问题讨论】:

标签: php


【解决方案1】:

尝试以下解决方案:

$array = array
(
    0 => '28/02/2016',
    1 => '30/01/2016',
    2 => '16/02/2016',
    3 => '19/02/2016',
    4 => '24/02/2016',
    5 => '13/02/2016',
    6 => '18/02/2016',
    7 => '27/02/2016',
    8 => '25/02/2016',
    9 => '01/02/2016',
    10 => '02/02/2016',
    11 => '03/02/2016',
    12 => '05/02/2016',
    13 => '06/02/2016',
    14 => '07/02/2016',
    15 => '08/02/2016',
    16 => '11/02/2016',
    17 => '12/02/2016'
);

function sortFunction( $a, $b ) {
    $date1 = DateTime::createFromFormat('d/m/Y', $a);

    $date2 = DateTime::createFromFormat('d/m/Y', $b);
    return $date1->getTimestamp() - $date2->getTimestamp();
}
usort($array, "sortFunction");
print_r($array);

输出

Array
(
    [0] => 30/01/2016
    [1] => 01/02/2016
    [2] => 02/02/2016
    [3] => 03/02/2016
    [4] => 05/02/2016
    [5] => 06/02/2016
    [6] => 07/02/2016
    [7] => 08/02/2016
    [8] => 11/02/2016
    [9] => 12/02/2016
    [10] => 13/02/2016
    [11] => 16/02/2016
    [12] => 18/02/2016
    [13] => 19/02/2016
    [14] => 24/02/2016
    [15] => 25/02/2016
    [16] => 27/02/2016
    [17] => 28/02/2016
)

【讨论】:

    【解决方案2】:

    使用 sort() 试试这个

    $array = array
    (
        0 => '28/02/2016',
        1 => '30/01/2016',
        2 => '16/02/2016',
        3 => '19/02/2016',
        4 => '24/02/2016',
        5 => '13/02/2016',
        6 => '18/02/2016',
        7 => '27/02/2016',
        8 => '25/02/2016',
        9 => '01/02/2016',
        10 => '02/02/2016',
        11 => '03/02/2016',
        12 => '05/02/2016',
        13 => '06/02/2016',
        14 => '07/02/2016',
        15 => '08/02/2016',
        16 => '11/02/2016',
        17 => '12/02/2016'
    );
    
    foreach($array as $key=>$val) {
        $date_arr=explode('/',$val);
        $time_arr[$key]=strtotime($date_arr[2].'/'.$date_arr[1].'/'.$date_arr[0]);
    }
    sort($time_arr);
    foreach($time_arr as $key=>$val) {
        $array[$key]=date("d/m/Y", $val);
    }
    echo '<pre>'; print_r($array); echo '</pre>';
    

    输出

    Array
    (
        [0] => 30/01/2016
        [1] => 01/02/2016
        [2] => 02/02/2016
        [3] => 03/02/2016
        [4] => 05/02/2016
        [5] => 06/02/2016
        [6] => 07/02/2016
        [7] => 08/02/2016
        [8] => 11/02/2016
        [9] => 12/02/2016
        [10] => 13/02/2016
        [11] => 16/02/2016
        [12] => 18/02/2016
        [13] => 19/02/2016
        [14] => 24/02/2016
        [15] => 25/02/2016
        [16] => 27/02/2016
        [17] => 28/02/2016
    )
    

    【讨论】:

      猜你喜欢
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多