代码之家  ›  专栏  ›  技术社区  ›  Rahul TS

排序和重新排列数组元素

  •  1
  • Rahul TS  · 技术社区  · 14 年前
    $people = array(
        array('id' => 12345,'first_name' => 'Joe1','date' => '02/06/2011'),
        array('id' => 12346,'first_name' => 'Joe','date' => '01/27/2011'),
        array('id' => 12347,'first_name' => 'rah','date' => '01/22/2011'),
        array('id' => 12348,'first_name' => 'sar','date' => '02/21/2011'),
        array('id' => 12349,'first_name' => 'raj','date' => '04/18/2011'),
        array('id' => 12350,'first_name' => 'viv','date' => '01/31/2011'),
    );
    

    我希望这个数组元素按日期排序,然后根据php中日期的升序重新排列数组元素 说后面的流程应该如下所示,

    var_export($people); 
    //answer
    
    array(
      array('id' => 12347, 'first_name' => 'rah', 'date' => '01/22/2011'),
      array('id' => 12346, 'first_name' => 'Joe', 'date' => '01/27/2011'),
      array('id' => 12350, 'first_name' => 'viv', 'date' => '01/31/2011'),
      array('id' => 12345, 'first_name' => 'Joe1', 'date' => '02/06/2011'),
      array('id' => 12348, 'first_name' => 'sar', 'date' => '02/21/2011'),
      array('id' => 12349, 'first_name' => 'raj', 'date' => '04/18/2011')
    )
    
    2 回复  |  直到 12 年前
        1
  •  0
  •   jensgram    14 年前

    如果你想手动操作(通过 usort() ):

    function mdy2ymd($date) {
            $parts = explode('/', $date);
            return $parts[2] . $parts[0] . $parts[1]; // YYYYMMDD
    }
    
    function sortByDate($a, $b) {
            return mdy2ymd($a['date']) - mdy2ymd($b['date']);
    }
    
    usort($people, 'sortByDate');
    

    ( Demo )

    sortByDate() 是比较函数和 mdy2ymd() 只是在表单上生成时间戳的助手 MM/DD/YYYY 可比。

        2
  •  0
  •   bcosca    14 年前