如何根据日期降序排序数组

时间:2016-03-02 10:21:16

标签: php arrays sorting

我需要使用php按降序排序数组对象。我尝试了下面的代码,但没有得到预期的结果。你能建议做这个任务吗?提前谢谢。

$document_list = array( '01-14-2013', '01-12-2013', '04-05-2016' );
usort($document_list, array($this, "sortByDate"));

function sortByDate($a, $b) {
    return  strcmp($b['createdDate'], $a['createdDate']);
}

当我尝试使用此代码时,输​​出错误。

4 个答案:

答案 0 :(得分:0)

对于这种方法,您需要转换日期格式&日期到时间戳。

$document_list = array( '14-01-2013', '12-01-2013', '05-04-2016' );
$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);

<强>输出

array(3) {
  [0]=>
  string(10) "04-05-2016"
  [1]=>
  string(10) "01-14-2013"
  [2]=>
  string(10) "01-12-2013"
}

答案 1 :(得分:0)

$document_list = array( '01-14-2013', '01-12-2013', '04-05-2016' );
usort($document_list, array($this, "sortByDate"));

function sortByDate($a, $b) {
    if(strtotime($b['createdDate'])<strtotime($a['createdDate'])){
        return $a['createdDate'];
    }else{
        return $b['createdDate'];
    }
}

试试这个

答案 2 :(得分:0)

哟可以使用以下方式做一些优雅:( usort:使用用户定义的比较函数按值对数组进行排序

<div class="container text-center">  
    <div class="row">   

        <div class="col-sm-4 col-lg-3 col-lg-push-9"> 
            <div class="alert alert-warning">A</div>
        </div>   

        <div class="col-sm-4 col-lg-3 col-lg-pull-3">  
            <div class="alert alert-info">B</div>
        </div>     

        <div class="col-sm-8 col-lg-6 col-lg-pull-3">
            <div class="alert alert-danger">C</div>
        </div>  

    </div>
</div>

答案 3 :(得分:0)

就个人而言,由于日期时间格式的内部冲突,我发现按日期排序数组是一个不可扩展的选项。以下可能无法完全回答问题,但如果使用从数据库获取的数组,可能会有所帮助。

假设在您的表中有一个主要的自动增量“id”列,那么您始终可以ORDER BY id_column DESC。您将收到与按日期排序相同的结果 - 但速度要快得多。

如果出于某种原因你不能直接通过SQL使用ORDER BY id DESC,只需根据你的情况通过these functions在php中重构数组。

作为旁注:要使用上面的php排序函数预览你的实验,我强烈建议通过我在php.net郊区的某个地方找到的片段可视化数组显示 -

function visual_arr($arr){
    echo '<pre>';
    print_r($arr);
    echo  '</pre>';
}

调用它 - 只需在项目文件中的某处使用:visual_arr($ the_array_you_want_to_display_in_human_radable_format)。显然,为数组选择一个较短的名称^^

希望这有帮助。