2016-03-21 6 views
0

Wie kann ich ein Array mit Bedingungen in PHP sortieren? Ich möchte das Array nach ID sortiert dann nach Eltern-ID innerhalb der ID nicht nach der ID sortieren. Die Gründe, warum tun, ist dies in jQuery TreeGrid zu implementieren.PHP Array [Sortieren + Gruppieren]

Zum Beispiel:

Array 
(
[0] => Array 
    (
     [0] => 1 //ID 
     [1] => TEST //Name 
     [2] => 1 //Parent ID 
    ) 
[1] => Array 
    (
     [0] => 2 //ID 
     [1] => TEST //Name 
     [2] => 2 //Parent ID 
    ) 
[2] => Array 
    (
     [0] => 3 //ID 
     [1] => TEST //Name 
     [2] => 3 //Parent ID 
    ) 
[3] => Array 
    (
     [0] => 4 //ID 
     [1] => TEST //Name 
     [2] => 1 //Parent ID 
    ) 
[4] => Array 
    (
     [0] => 5 //ID 
     [1] => TEST //Name 
     [2] => 2 //Parent ID 
    ) 
) 

Nach dem Sortieren so geworden:

Array 
(
[0] => Array 
    (
     [0] => 1 //ID 
     [1] => TEST //Name 
     [2] => 1 //Parent ID 
    ) 
[1] => Array 
    (
     [0] => 4 //ID 
     [1] => TEST //Name 
     [2] => 1 //Parent ID 
    ) 
[2] => Array 
    (
     [0] => 2 //ID 
     [1] => TEST //Name 
     [2] => 2 //Parent ID 
    ) 
[3] => Array 
    (
     [0] => 5 //ID 
     [1] => TEST //Name 
     [2] => 2 //Parent ID 
    ) 
[4] => Array 
    (
     [0] => 3 //ID 
     [1] => TEST //Name 
     [2] => 3 //Parent ID 
    ) 
) 
+0

was hast du probiert? Hast du erst hier auf SO nach einer Suche gesucht? http://stackoverflow.com/search?q=php+sort+multi-dimentional+array – Sean

+0

Holen Sie diese Daten aus der Datenbank? –

+0

@Sougata ja .. es ist aus der Datenbank – Robinson

Antwort

0

können Sie array_multisort() verwenden.

//get lists to sort by 
foreach ($your_array as $key => $value) { 

    $id_array[$key]  = $value[0]; 
    $parent_id_array[$key] = $value[2]; 

} 

//sort first by `id` ascending, then by `parent_id` ascending 
array_multisort ($id_array, SORT_ASC, $parent_id_array, SORT_ASC, $your_array); 

Sie können sogar das obige Beispiel verkürzen array_orderby() unter Verwendung:

$your_array = array_orderby ($your_array, 0, SORT_ASC, 2, SORT_ASC); 
+0

mit dieser Methode kann es nur die ID sortieren und die Eltern-ID ist unter der ID nicht innerhalb der ID sortiert. – Robinson

0

Verwenden Sie diesen Code. Es funktioniert

foreach ($data as $key => $row) { 
    $id[$key] = $row[0]; 
    $parent_id[$key] = $row[2]; 
} 

array_multisort($id,SORT_ASC,$parent_id,SORT_ASC,$data); 
+0

mit dieser Methode kann nur die ID und die Eltern-ID wird unter der ID nicht innerhalb der ID sortiert .. – Robinson