Wie kann ich dieses Array nach dem Wert des "order" -Schlüssels sortieren? Obwohl die Werte derzeit sequentiell sind, werden sie nicht immer sequentiell sein.
Array
(
[0] => Array
(
[hashtag] => a7e87329b5eab8578f4f1098a152d6f4
[title] => Flower
[order] => 3
)
[1] => Array
(
[hashtag] => b24ce0cd392a5b0b8dedc66c25213594
[title] => Free
[order] => 2
)
[2] => Array
(
[hashtag] => e7d31fc0602fb2ede144d18cdffd816b
[title] => Ready
[order] => 1
)
)
Antworten:
Versuchen Sie es mit einem Usort . Wenn Sie noch mit PHP 5.2 oder früher arbeiten, müssen Sie zuerst eine Sortierfunktion definieren:
Ab PHP 5.3 können Sie eine anonyme Funktion verwenden:
Und schließlich können Sie mit PHP 7 den Raumschiff-Operator verwenden :
Um dies auf die mehrdimensionale Sortierung auszudehnen, verweisen Sie auf das zweite / dritte Sortierelement, wenn das erste Null ist - am besten unten erläutert. Sie können dies auch zum Sortieren nach Unterelementen verwenden.
Wenn Sie Schlüsselzuordnungen beibehalten müssen, verwenden Sie
uasort()
- siehe Vergleich der Array-Sortierfunktionen im Handbuchquelle
uasort()
Sie diese Option, wenn Sie die Array-Schlüssel beibehalten möchten.quelle
Ich benutze diese Funktion:
quelle
array_multisort
und daher nicht vorbelegt werden muss$sort_col
, was Zeit und Speicher spart .&$arr
anstatt nur$arr
?Normalerweise benutze ich usort und übergebe meine eigene Vergleichsfunktion. In diesem Fall ist es sehr einfach:
In PHP 7 mit Raumschiffoperator:
quelle
$a['order']
also 3 und$b['order']
6 ist, werde ich -3 zurückgeben. Richtig?Ein Ansatz, um dies zu erreichen, wäre folgender
Ergebnis:
quelle
Um das Array nach dem Wert des Schlüssels "title" zu sortieren, verwenden Sie:
strcmp vergleiche die Strings.
uasort () verwaltet die Array-Schlüssel so, wie sie definiert wurden.
quelle
Dies berücksichtigt sowohl Groß- als auch Kleinbuchstaben.
quelle
Verwenden Sie
array_multisort()
,array_map()
DEMO
quelle
array_multisort
verweist auf den ersten Parameter.Der flexibelste Ansatz wäre die Verwendung dieser Methode
hier ist der Grund:
Sie können nach jedem Schlüssel sortieren (auch verschachtelt wie
'key1.key2.key3'
oder['k1', 'k2', 'k3']
)Funktioniert sowohl für assoziative als auch für nicht assoziative Arrays (
$assoc
Flag)Es wird keine Referenz verwendet - neues sortiertes Array zurückgeben
In Ihrem Fall wäre es so einfach wie:
Diese Methode ist Teil dieser Bibliothek .
quelle
Seien wir ehrlich: PHP verfügt NICHT über eine einfache Out-of-the-Box-Funktion, um jedes Array-Sortierszenario richtig zu handhaben.
Diese Routine ist intuitiv, was ein schnelleres Debuggen und eine schnellere Wartung bedeutet:
quelle
global
eine große rote Fahne und wird im Allgemeinen nicht empfohlen . Warum wirdmysql_fetch_array
für diese Frage anstelle des Quellarrays des OP demonstriert, und es gibt keine Erklärung dafür, was Ihr Code tut und was das Ergebnis erwarten kann? Insgesamt ist dies ein sehr komplexer Ansatz, um das gewünschte Endergebnis zu erzielen.global
see: 3v4l.org/FEeFC zu verwenden. Dies erzeugt eine explizit definierte Variable und keine, auf die global geändert und zugegriffen werden kann.Sie können mehrdimensionale Arrays auch nach mehreren Werten wie as sortieren
mit
Ausgabe mit
print_r($arr)
:PS) Die Verwendung von strcmp wäre eine gute Option, um die Zeichenfolgen zu vergleichen.
quelle