2014-03-14 51 views
-1

我有一个数组。现在我想按date.how排序这个数组?排列数组日期明智

我的数组

$细节= $这个 - > api_model-> testw()在$细节

这里MySQL查询返回的结果数组。

我想我的排序数组作为日期,那么要显示输出JSON

在JSON计算我的输出显示后。

"details":[ 

     { 
      "id":"2", 
      "score":"1256", 
      "user_id":"5", 
      "date":"2014-02-05 00:00:00", 

     }, 
     { 
      "id":"3", 
      "score":"100", 
      "user_id":"6", 
      "date":"2014-03-08 00:00:00", 

     }, 
     { 
      "id":"4", 
      "score":"123", 
      "user_id":"7", 
      "date":"2014-03-04 00:00:00", 


     }, 

    ] 

我与使用kso​​rt但不起作用

+0

这是一个json字符串,而不是一个数组。你到目前为止尝试过什么? – Rikesh

+0

尝试'usort' .... – xdazz

+1

阅读'json_decode'和'usort' –

回答

4

使用usort尝试。该函数将数组中的日期字段转换为可轻松相互比较的unix时间戳。

<?php 
$arr = array(
array("id" => 2, "date" => "2014-02-05 00:00:00"), 
array("id" => 3, "date" => "2013-02-05 00:00:00"), 
array("id" => 4, "date" => "2012-02-05 00:00:00"), 
array("id" => 5, "date" => "2011-02-05 00:00:00"), 
array("id" => 6, "date" => "2012-02-05 00:00:00"), 
array("id" => 7, "date" => "2012-04-05 00:00:00"), 
array("id" => 8, "date" => "2018-02-05 00:00:00")); 

usort($arr,function($a,$b) 
    { 
    $a = strtotime($a['date']); 
    $b = strtotime($b['date']); 
    //return $a - $b; //is possible too, but harder to understand 
    if ($a == $b) return 0; 
    return ($a < $b) ? -1 : 1; 
    } 
); 

print_r($arr);