2016-07-30 10 views
1

現在、PHPの期日によって多次元配列をソートしようとしていますが、ソートに失敗しています。私はここでいくつかのソリューションを適用しようとしましたが、運がなかった。誰かが下のコードのための適切な解決法について助言してもらえますか?PHPで多次元配列を日付で並べ替えることができません

function getTasksTeam($user) { 

    $master = array(); 
    $master["record"] = array(); 


    $teamArray = array(); 
    $teams = mysql_query("SELECT * FROM users WHERE _id = '$user'") or die(mysql_error()); 
    if (mysql_num_rows($teams) > 0) { 
         while(($row = mysql_fetch_assoc($teams))) { 
          $teamArray = explode(':', $row["TEAM"]); 

         } 
    } 

    for ($i = 0;$i < count($teamArray);$i++) { 
     $teamId = $teamArray[$i]; 

     $query = mysql_query("SELECT * FROM tasks WHERE RESPONSIBLE_TYPE = '0' AND RESPONSIBLE = '$teamId' AND STATUS <> 3") or die(mysql_error()); 
     if (mysql_num_rows($query) > 0) { 
      while (($row = mysql_fetch_assoc($query))) { 
        $record = array(); 
        $record["id"] = $row["_id"]; 
        $record["task"] = $row["TASK"]; 
        $record["part_number"] = $row["PART_NUMBER"]; 
        $record["due"] = $row["DATE_DUE"]; 
        $record["responsible"] = $row["RESPONSIBLE"]; 
        $record["status"] = $row["STATUS"]; 
        array_push($master["record"], $record); 

      } 
     } 
    } 

    usort($master["record"], 'date_sort'); 

    $master["success"] = 1; 
    header('Content-type: application/json'); 
    echo json_encode($master); 

} 

function date_sort($a, $b) { 
    return strcmp($a['due'], $b['due']); 
} 
+0

なぜあなたは注文を使ってmysqlクエリで直接ソートしないのですか?そのコードよりも効率的です。 – msantos

+1

@msantos彼はネストされたループを持っているので、 'ORDER BY'を使うことはできません;) –

答えて

0

あなたはこのようusortstrtotimeを使用することができます。

usort($master["record"], function($a, $b) { 
    return strtotime($a['due']) - strtotime($b['due']); 
}); 

私は、これはあなたを助けることを願っています。

+0

Worked great!ありがとう! – Josh

関連する問題