In diesem Beispiel repräsentiert jedes Element des Arrays
data eine Zeile einer Tabelle. Dieser Typ
von Datensätzen ist typisch für Datenbankinhalte.
Band | Auflage
-------+--------
67 | 2
86 | 1
85 | 6
98 | 2
86 | 6
67 | 7
Die Daten als data genanntes Array. Dieses würde
man üblicherweise mit einer Schleife über die Ergebnisse von
mysql_fetch_assoc() erhalten.
In diesem Beispiel werden wir absteigend nach Band
sortieren und aufsteigend nach Auflage.
Wir haben ein Array von Zeilen, aber array_multisort()
benötigt ein Array von Spalten, also benutzen wir den Code unten, um die
Spalten zu bekommen und dann die Sortierung durchzuführen.
<?php
// Die Daten, die durch eine Schleife über mysqli_fetch_assoc erstellt wurden:
$data[] = array('Band' => 67, 'Auflage' => 2);
$data[] = array('Band' => 86, 'Auflage' => 1);
$data[] = array('Band' => 85, 'Auflage' => 6);
$data[] = array('Band' => 98, 'Auflage' => 2);
$data[] = array('Band' => 86, 'Auflage' => 6);
$data[] = array('Band' => 67, 'Auflage' => 7);
// Hole eine Liste von Spalten
foreach ($data as $key => $row) {
$band[$key] = $row['Band'];
$auflage[$key] = $row['Auflage'];
}
// Statt des obigen Codes kann array_column() verwendet werden
$band = array_column($data, 'Band');
$auflage = array_column($data, 'Auflage');
// Die Daten mit 'Band' absteigend, die mit 'Auflage' aufsteigend sortieren.
// Geben Sie $data als letzten Parameter an, um nach dem gemeinsamen
// Schlüssel zu sortieren.
array_multisort($band, SORT_DESC, $auflage, SORT_ASC, $data);
// Durchlaufe die Daten und gib die sortierten Werte für jede Spalte aus
echo 'Band | Auflage', PHP_EOL;
echo '-----+--------', PHP_EOL;
for ($i = 0; $i < count($data); $i++) {
printf("%6d | %7d\n", $band[$i], $auflage[$i]);
}
?>
Der Datensatz ist jetzt sortiert und wird wie folgt aussehen:
Band | Auflage
-----+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7