
Stefan
Wie kann ich dieses Array nach dem Wert des Schlüssels “Bestellung” sortieren?
Auch wenn die Werte derzeit sequenziell sind, wird dies nicht immer der Fall sein.
Array
(
[0] => Array
(
[hashtag] => a7e87329b5eab8578f4f1098a152d6f4
How to Sort a Multi-dimensional Array by Value => Flower
[order] => 3
)
[1] => Array
(
[hashtag] => b24ce0cd392a5b0b8dedc66c25213594
How to Sort a Multi-dimensional Array by Value => Free
[order] => 2
)
[2] => Array
(
[hashtag] => e7d31fc0602fb2ede144d18cdffd816b
How to Sort a Multi-dimensional Array by Value => Ready
[order] => 1
)
)

Christian Studer
Versuchen Sie a usort. Wenn Sie noch auf PHP 5.2 oder früher sind, müssen Sie zuerst eine Sortierfunktion definieren:
function sortByOrder($a, $b) {
return $a['order'] - $b['order'];
}
usort($myArray, 'sortByOrder');
Ab PHP 5.3 können Sie eine anonyme Funktion verwenden:
usort($myArray, function($a, $b) {
return $a['order'] - $b['order'];
});
Und schließlich können Sie mit PHP 7 den Raumschiff-Operator verwenden:
usort($myArray, function($a, $b) {
return $a['order'] <=> $b['order'];
});
Um dies auf eine mehrdimensionale Sortierung zu erweitern, referenzieren Sie das zweite/dritte Sortierelement, wenn das erste null ist – am besten unten erklärt. Sie können dies auch zum Sortieren nach Unterelementen verwenden.
usort($myArray, function($a, $b) {
$retval = $a['order'] <=> $b['order'];
if ($retval == 0) {
$retval = $a['suborder'] <=> $b['suborder'];
if ($retval == 0) {
$retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder'];
}
}
return $retval;
});
Wenn Sie Schlüsselzuordnungen beibehalten müssen, verwenden Sie uasort()
– sehen Vergleich von Array-Sortierfunktionen im Handbuch.

o0′.
function aasort (&$array, $key) {
$sorter = array();
$ret = array();
reset($array);
foreach ($array as $ii => $va) {
$sorter[$ii] = $va[$key];
}
asort($sorter);
foreach ($sorter as $ii => $va) {
$ret[$ii] = $array[$ii];
}
$array = $ret;
}
aasort($your_array, "order");

Tom Haigh
Ich benutze 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 jetzt wahrscheinlich bessere Lösungen, aber ich füge einige zusätzliche Informationen hinzu, wie in einigen Kommentaren angefordert.
Es funktioniert, weil array_multisort()
kann mehrere Arrays sortieren. Beispieleingabe:
Array
(
[0] => Array
(
[hashtag] => a7e87329b5eab8578f4f1098a152d6f4
How to Sort a Multi-dimensional Array by Value => Flower
[order] => 3
)
[1] => Array
(
[hashtag] => b24ce0cd392a5b0b8dedc66c25213594
How to Sort a Multi-dimensional Array by Value => Free
[order] => 2
)
Zuerst $sort_col
erstellt, bei dem es sich um ein zweidimensionales Array mit den Werten handelt, nach denen wir sortieren möchten, und den Schlüsseln, die mit dem Eingabearray übereinstimmen. Wählen Sie zum Beispiel für diese Eingabe die Taste aus $sort_col
"order"
wir bekommen:
Array
(
[0] => 3,
[1] => 2
)
array_multisort()
sortiert dann dieses Array (was zu einer Schlüsselreihenfolge führt 1, 0
), aber dies ist nur das zweidimensionale Array. Das ursprüngliche Eingabearray wird also auch als übergeben $rest
Streit. Wenn die Schlüssel übereinstimmen, wird es sortiert, sodass seine Schlüssel auch in der gleichen Reihenfolge sind, was das gewünschte Ergebnis ergibt.
Notiz:
- Es wird als Referenz übergeben, sodass das bereitgestellte Array an Ort und Stelle geändert wird.
array_multisort()
kann mehrere zusätzliche Arrays wie dieses sortieren, nicht nur eines

ajuchacko91
Um dies zu erreichen, können wir “array_multisort“-Methode, die mehrere oder mehrdimensionale Arrays sortiert. Ihre Methodenparameter sind
- $keys – ein Array, das sortiert wird
- SORT_ASC – Sortierreihenfolge (aufsteigend)
- Sortierkennzeichen (Elemente normal vergleichen (Typen nicht ändern) oder numerisch oder als Zeichenfolgen)
- $new – dann Rest der Arrays. Nur Elemente, die äquivalenten Elementen im Vorhergehenden entsprechen
Arrays werden verglichen.
‘sort flags’ ist standardmäßig SORT_REGULAR und wird weggelassen.
$new = [
[
'hashtag' => 'a7e87329b5eab8578f4f1098a152d6f4',
'title' => 'Flower',
'order' => 3,
],
[
'hashtag' => 'b24ce0cd392a5b0b8dedc66c25213594',
'title' => 'Free',
'order' => 2,
],
[
'hashtag' => 'e7d31fc0602fb2ede144d18cdffd816b',
'title' => 'Ready',
'order' => 1,
],
];
$keys = array_column($new, 'order');
array_multisort($keys, SORT_ASC, $new);
var_dump($new);
Ergebnis:
Array
(
[0] => Array
(
[hashtag] => e7d31fc0602fb2ede144d18cdffd816b
How to Sort a Multi-dimensional Array by Value => Ready
[order] => 1
)
[1] => Array
(
[hashtag] => b24ce0cd392a5b0b8dedc66c25213594
How to Sort a Multi-dimensional Array by Value => Free
[order] => 2
)
[2] => Array
(
[hashtag] => a7e87329b5eab8578f4f1098a152d6f4
How to Sort a Multi-dimensional Array by Value => Flower
[order] => 3
)
)

Jan Fabry
Ich benutze normalerweise usort, und übergebe meine eigene Vergleichsfunktion. In diesem Fall ist es ganz einfach:
function compareOrder($a, $b)
{
return $a['order'] - $b['order'];
}
usort($array, 'compareOrder');
In PHP 7 mit dem Raumschiffoperator:
usort($array, function($a, $b) {
return $a['order'] <=> $b['order'];
});

Peter Mortensen
Um das Array nach dem Wert des Schlüssels “Titel” zu sortieren, verwenden Sie:
uasort($myArray, function($a, $b) {
return strcmp($a['title'], $b['title']);
});
strcmp Vergleiche die Saiten.
uasort() behält die Array-Schlüssel so bei, wie sie definiert wurden.

shazyriver
Verwenden array_multisort()
, array_map()
array_multisort(array_map(function($element) {
return $element['order'];
}, $array), SORT_ASC, $array);
print_r($array);
DEMO
9938900cookie-checkSo sortieren Sie ein mehrdimensionales Array nach Wertyes
Cross-Linked: Referenz: Alle grundlegenden Methoden zum Sortieren von Arrays und Daten in PHP
– hakre
30. Oktober 2013 um 9:48 Uhr
Am schnellsten geht es mit der Isomorphie sort-array Modul, das sowohl im Browser als auch im Knoten nativ funktioniert und alle Arten von Eingaben, berechneten Feldern und benutzerdefinierten Sortierreihenfolgen unterstützt.
– Lloyd
21. Oktober 2019 um 20:26 Uhr