Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich mit „array_multisort' ein mehrdimensionales Array in PHP nach mehreren Spalten sortieren?

Wie kann ich mit „array_multisort' ein mehrdimensionales Array in PHP nach mehreren Spalten sortieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-31 06:26:09961Durchsuche

How can I sort a multidimensional array in PHP by multiple columns using `array_multisort`?

Mehrdimensionale Arrays nach mehreren Spalten sortieren

Das Sortieren eines mehrdimensionalen Arrays kann eine anspruchsvolle Aufgabe sein, insbesondere wenn mehrere Kriterien berücksichtigt werden. Glücklicherweise bietet PHP mit der Funktion array_multisort eine elegante Lösung.

Um ein mehrdimensionales Array zu sortieren, müssen wir die erforderlichen Spalten extrahieren und an array_multisort übergeben. Jede Spalte wird unabhängig sortiert, wobei die Sortierreihenfolge als SORT_ASC oder SORT_DESC angegeben wird.

Zum Beispiel das folgende Eingabearray:

$array = [
    ['ID' => 1, 'title' => 'Boring Meeting',  'date_start' => '2010-07-30', 'event_type' => 'meeting', 'state' => 'new-york'],
    ['ID' => 2, 'title' => 'Find My Stapler', 'date_start' => '2010-07-22', 'event_type' => 'meeting', 'state' => 'new-york'],
    ['ID' => 3, 'title' => 'Mario Party',     'date_start' => '2010-07-22', 'event_type' => 'party',   'state' => 'new-york'],
    ['ID' => 4, 'title' => 'Duct Tape Party', 'date_start' => '2010-07-28', 'event_type' => 'party',   'state' => 'california']
];

Um nach Status zu sortieren, dann nach Ereignistyp und schließlich date_start würden wir den folgenden Code verwenden:

# extract columns
$state = array_column($array, 'state');
$event_type = array_column($array, 'event_type');
$date_start = array_column($array, 'date_start');

# sort by state desc, event_type asc, date_start asc
array_multisort($state, SORT_DESC, $event_type, SORT_ASC, $date_start, SORT_ASC, $array);

PHP 5.5.0 führt eine vereinfachte Syntax mit ein array_column:

array_multisort(
    array_column($array, 'state'), SORT_DESC,
    array_column($array, 'event_type'),      SORT_ASC,
    $array
);

Als Ergebnis sieht das sortierte Array wie folgt aus:

[
    ['ID' => 4, 'title' => 'Duct Tape Party', 'date_start' => '2010-07-28', 'event_type' => 'party',   'state' => 'california'],
    ['ID' => 3, 'title' => 'Mario Party',     'date_start' => '2010-07-22', 'event_type' => 'party',   'state' => 'new-york'],
    ['ID' => 2, 'title' => 'Find My Stapler', 'date_start' => '2010-07-22', 'event_type' => 'meeting', 'state' => 'new-york'],
    ['ID' => 1, 'title' => 'Boring Meeting',  'date_start' => '2010-07-30', 'event_type' => 'meeting', 'state' => 'new-york'],
];

Durch die Verwendung von array_multisort haben wir das mehrdimensionale Array effektiv auf der Grundlage mehrerer Spalten sortiert und so eine flexible und leistungsstarke Lösung bereitgestellt Lösung für die Organisation und den Abruf von Daten.

Das obige ist der detaillierte Inhalt vonWie kann ich mit „array_multisort' ein mehrdimensionales Array in PHP nach mehreren Spalten sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn