2016-07-30 4 views
1

kann nicht sortiert werden Ich versuche derzeit, ein mehrdimensionales Array nach einem Fälligkeitsdatum in PHP zu sortieren, aber die Sortierung ist nicht erfolgreich. Ich habe versucht, hier einige der Lösungen anzuwenden, aber ich hatte kein Glück. Kann jemand bitte eine angemessene Lösung für den unten stehenden Code empfehlen?Mehrdimensionale Array nach Datum in 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

Warum sortieren Sie nicht direkt in den mysql-Abfragen mit der Reihenfolge nach? Es ist effizienter als es im PHP-Code zu tun. – msantos

+1

@msantos kann er 'ORDER BY' nicht verwenden, da er Loops verschachtelt hat;) –

Antwort

0

Sie können usort und strtotime wie folgt verwenden:

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

Ich hoffe, dies wird Ihnen helfen.

+0

Großartig gearbeitet! Vielen Dank! – Josh