Ich verwende diese Funktion:
function array_sort_by_column(&$arr, $col, $dir = SORT_ASC) {
$sort_col = array();
foreach ($arr as $key => $row) {
$sort_col[$key] = $row[$col];
}
array_multisort($sort_col, $dir, $arr);
}
array_sort_by_column($array, 'order');
Bearbeiten Diese Antwort ist mindestens zehn Jahre alt, und es gibt wahrscheinlich jetzt bessere Lösungen, aber ich füge einige zusätzliche Informationen hinzu, wie in einigen Kommentaren angefordert.
Es funktioniert, weil array_multisort()
mehrere Arrays sortieren kann. Beispiel Eingabe:
Array
(
[0] => Array
(
[hashtag] => a7e87329b5eab8578f4f1098a152d6f4
[title] => Flower
[order] => 3
)
[1] => Array
(
[hashtag] => b24ce0cd392a5b0b8dedc66c25213594
[title] => Free
[order] => 2
)
Zuerst wird $sort_col
erstellt, das ein zweidimensionales Array ist, wobei die Werte das sind, nach denen sortiert werden soll, und die Schlüssel mit dem Eingabearray übereinstimmen. Zum Beispiel für diese Eingabe, wenn der Schlüssel $sort_col
"order"
wählt, erhalten wir:
Array
(
[0] => 3,
[1] => 2
)
array_multisort()
sortiert dann dieses Array (was zu der Schlüsselreihenfolge 1, 0
führt), aber dies ist nur das zweidimensionale Array. Daher wird auch das ursprüngliche Eingabearray als Argument $rest
übergeben. Da die Schlüssel übereinstimmen, wird es so sortiert, dass auch seine Schlüssel in der gleichen Reihenfolge sind, was das gewünschte Ergebnis liefert.
Hinweis:
- Es wird als Referenz übergeben, damit das bereitgestellte Array direkt geändert wird.
array_multisort()
kann auf diese Weise nicht nur ein, sondern mehrere zusätzliche Arrays sortieren