1328 Stimmen

Wie man ein mehrdimensionales Array nach Wert sortiert

Wie kann ich dieses Array nach dem Wert des Schlüssels "order" sortieren?

Auch wenn die Werte derzeit sequenziell sind, werden sie es nicht immer sein.

Array
(
    [0] => Array
        (
            [hashtag] => a7e87329b5eab8578f4f1098a152d6f4
            [title] => Blume
            [order] => 3
        )

    [1] => Array
        (
            [hashtag] => b24ce0cd392a5b0b8dedc66c25213594
            [title] => Frei
            [order] => 2
        )

    [2] => Array
        (
            [hashtag] => e7d31fc0602fb2ede144d18cdffd816b
            [title] => Bereit
            [order] => 1
        )
)

25voto

B.K Punkte 811

Um das Array nach dem Wert des "title" Schlüssels zu sortieren, verwenden Sie:

uasort($myArray, function($a, $b) {
    return strcmp($a['title'], $b['title']);
});

strcmp vergleicht die Zeichenketten.

uasort() behält die Array-Schlüssel bei, wie sie definiert wurden.

21voto

Ghanshyam Nakiya Punkte 1365

Verwenden Sie array_multisort(), array_map()

array_multisort(array_map(function($element) {
      return $element['order'];
  }, $array), SORT_ASC, $array);

print_r($array);

DEMO

19voto

Nitrodbz Punkte 1276
$sort = array();
$array_lowercase = array_map('strtolower', $array_to_be_sorted);
array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $alphabetically_ordered_array);

Dies kümmert sich um sowohl Groß- als auch Kleinbuchstaben im Alphabet.

7voto

Minwork Punkte 568

Der flexibelste Ansatz wäre die Verwendung dieser Methode:

Arr::sortByKeys(array $array, $keys, bool $assoc = true): array

Deshalb:

  • Sie können nach jedem Schlüssel sortieren (auch verschachtelt wie 'key1.key2.key3' oder ['k1', 'k2', 'k3'])

  • Es funktioniert sowohl bei assoziativen als auch bei nicht assoziativen Arrays (mit dem $assoc Flag)

  • Es verwendet keine Referenzen - es gibt ein neues sortiertes Array zurück

In Ihrem Fall wäre es so einfach wie:

$sortedArray = Arr::sortByKeys($array, 'order');

Diese Methode ist Teil dieser Bibliothek.

5voto

dılo sürücü Punkte 2737

Die Arbeits "Pfeilfunktion" Syntax mit PHP 7.4 und höher:

uasort($yourArray, fn($a, $b) => $a['order'] <=> $b['order']);

pretty print

echo '

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X