Ich versuche, ein mehrdimensionales Array nach mehreren Schlüsseln zu sortieren, und ich habe keine Ahnung, wo ich anfangen soll. Ich habe mir uasort angesehen, war mir aber nicht ganz sicher, wie ich eine Funktion für das schreiben soll, was ich brauche.
Ich muss nach dem Status sortieren, dann nach event_type und dann nach dem Datum.
Mein Array sieht folgendermaßen aus:
Array
(
[0] => Array
(
[ID] => 1
[title] => Boring Meeting
[date_start] => 2010-07-30
[time_start] => 06:45:PM
[time_end] =>
[state] => new-york
[event_type] => meeting
)
[1] => Array
(
[ID] => 2
[title] => Find My Stapler
[date_start] => 2010-07-22
[time_start] => 10:45:AM
[time_end] =>
[state] => new-york
[event_type] => meeting
)
[2] => Array
(
[ID] => 3
[title] => Mario Party
[date_start] => 2010-07-22
[time_start] => 02:30:PM
[time_end] => 07:15:PM
[state] => new-york
[event_type] => party
)
[3] => Array
(
[ID] => 4
[title] => Duct Tape Party
[date_start] => 2010-07-28
[time_start] => 01:00:PM
[time_end] =>
[state] => california
[event_type] => party
)
...... etc
php
arrays
sorting
multidimensional-array
attepted_nerd
quelle
quelle
Antworten:
Du brauchst
array_multisort
Ab PHP 5.5.0:
$mylist
ist jetzt:quelle
array_column
Funktion github.com/ramsey/array_column . So ist es möglich, bei älteren Versionen einen eleganteren Weg vom zweiten Code-Snippet zu verwenden.Sie können es mit tun
usort
. Das$cmp_function
Argument könnte sein:Für eine beliebige Anzahl von Feldern in PHP 5.3 können Sie Abschlüsse verwenden, um eine Vergleichsfunktion zu erstellen:
Für eine beliebige Anzahl von Feldern unterschiedlicher Typen in PHP 5.3:
quelle
PHP7 Erleichtert das Sortieren nach mehreren Spalten mit dem Raumschiffoperator SUPER (
<=>
), auch bekannt als "kombinierter Vergleichsoperator" oder "Drei-Wege-Vergleichsoperator".Ressource: https://wiki.php.net/rfc/combined-comparison-operator
Das Sortieren nach mehreren Spalten ist so einfach wie das Schreiben von ausgeglichenen / relationalen Arrays auf beiden Seiten des Operators. Einfach gemacht!
Ich habe nicht verwendet,
uasort()
weil ich keine Notwendigkeit sehe, die ursprünglichen Indizes beizubehalten.Code: ( Demo )
Ausgabe
ps Pfeilsyntax mit PHP7.4 und höher ( Demo ) ...
quelle
quelle
Ich habe versucht, unter Code und ich erfolgreich
Array-Code
Array-Sortierfunktion aufrufen
Array-Sortierfunktion
wenn Array umgekehrte Sortierfunktion
quelle
Hier ist meine pragmatische 2-Cent-Funktion, die den genialen Code von @Stijn Leenknegt verbessert:
quelle
Wenn Sie ein mehrdimensionales Array sortieren möchten
Das erste Array ist:
Der zweite ist:
Für dieses multidimentionale Array möchten Sie die absteigende Reihenfolge gleichzeitig sortieren und dann den folgenden Code verwenden:
quelle