[PHP] Multidimensionales Array sortieren

Drucken
( 0 Votes ) 
Hauptkategorie: Programmieren Kategorie: PHP
Erstellt am 16.12.2011 Zuletzt aktualisiert am 16.12.2011 Geschrieben von Jonny132
Um ein eindimensionales Array zu sortieren gibt es die array_sort Funktion von PHP. Wie sieht es aber mit Multidimensionalen Arrays aus? Genauso wie für eindimensionale Arrays gibt es auch für multidimensionale Arrays eine Funktion um zu sortieren.
Diese nennt sich array_multisort.
Um diese Funktion nützen zu können muss das Array eine bestimmte Struktur besitzen.
Verständlich wird das an einem Beispiel.

Multidimensionales Array sortieren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 function PrintMultiArray($array)
 {
   echo '<table>';
   foreach ($array as $key => $secondArray) {
     echo '<tr><td style="border-style:solid; border-width:1px;
              background-color:lightgray;">'
. $key . '</td>';
    foreach($secondArray as $value)     {       echo '<td style="border-style:solid; border-width:1px;">'.$value.'</td>';     }     echo '</tr>';    }   echo '</table>'; } $toSortArray= array('id' => array('5','7','4','10'), 'rankid' => array('15','20','10','32'), 'rank' => array('10','12','3','9'));

 PrintMultiArray($toSortArray); echo '<br><br>';

array_multisort($toSortArray['rank'], SORT_DESC,
         $toSortArray
['id'], SORT_ASC, $toSortArray['rankid'],SORT_ASC);
PrintMultiArray($toSortArray); ?>

 

Zuerst erstellen wir eine Funktion PrintMultiArray. In dieser machen wir nichts anderes als das Multidimensionale Array in eine Tabelle zu konvertieren und auszugeben.

Danach erstellen wir ein Multidimensionales Array. Die Keys für die inneren Arrays sind die Bezeichner der Spalten die wir haben.

Dann rufen wir die vorher erstelle Funktion PrintMultiArray auf um das Unsortierte Array auszugeben und das Ergebnis im nachhinein prüfen zu können.

Dann verwenden wir die Funktion array_multisort. Ihr übergeben wir die 'Spalten' nach denen sortiert werden soll. Die Reihenfolge der Angabe der Spalten definiert auch nach welcher Reihenfolge sortiert werden soll. Mit der Konstante SORT_ASC bzw SORT_DESC geben wir an ob auf- oder absteigend sortiert werden soll.

Nach der sortierung rufen wir nochmals die PrintMultiArray - Funktion auf um zu überprüfen ob die Sortierung richtig geklappt hat.

Multidimensionales Array sortieren

    Veröffentlichen Sie ihre Kommentare ...