Heim >Backend-Entwicklung >PHP-Tutorial >Wie sortiere ich ein mehrdimensionales Array in PHP nach einem bestimmten Schlüssel?

Wie sortiere ich ein mehrdimensionales Array in PHP nach einem bestimmten Schlüssel?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-20 11:35:08136Durchsuche

How to Sort a Multi-Dimensional Array in PHP by a Specific Key?

Sortieren mehrdimensionaler Arrays nach einem bestimmten Schlüssel

Das Sortieren mehrdimensionaler Arrays nach einem bestimmten Schlüsselwert kann mit verschiedenen Methoden in erreicht werden PHP. Lassen Sie uns ein häufiges Problem und seine Lösungen mit dieser Technik untersuchen.

Problem:

Wie sortieren wir ein Array basierend auf dem „Reihenfolge“-Schlüssel?

Arrays Struktur:

$myArray = [
    [
        'hashtag' => 'a7e87329b5eab8578f4f1098a152d6f4',
        'title'   => 'Flower',
        'order'   => 3
    ],
    [
        'hashtag' => 'b24ce0cd392a5b0b8dedc66c25213594',
        'title'   => 'Free',
        'order'   => 2
    ],
    [
        'hashtag' => 'e7d31fc0602fb2ede144d18cdffd816b',
        'title'   => 'Ready',
        'order'   => 1
    ]
];

Lösungen:

1. Verwenden von usort mit einer benutzerdefinierten Funktion:

Diese Methode beinhaltet die Definition einer benutzerdefinierten Sortierfunktion, die die „Reihenfolge“-Werte vergleicht und ein entsprechendes Vergleichsergebnis zurückgibt.

function sortByOrder($a, $b) {
    if ($a['order'] > $b['order']) {
        return 1;
    } elseif ($a['order'] < $b['order']) {
        return -1;
    }
    return 0;
}

usort($myArray, 'sortByOrder');

2. Verwendung anonymer Funktionen:

In PHP 5.3 und höher können anonyme Funktionen verwendet werden, um die benutzerdefinierte Sortierfunktion zu vereinfachen.

usort($myArray, function($a, $b) {
    if ($a['order'] > $b['order']) {
        return 1;
    } elseif ($a['order'] < $b['order']) {
        return -1;
    }
    return 0;
});

3. Verwendung des Raumschiff-Operators (PHP 7 und höher):

PHP 7 führte den Raumschiff-Operator (< =>) für prägnante Vergleichsoperationen ein.

usort($myArray, function($a, $b) {
    return $a['order'] <=> $b['order'];
});

4. Verwendung von Pfeilfunktionen (PHP 7.4 und höher):

Pfeilfunktionen vereinfachen den Code weiter, indem sie das Funktionsschlüsselwort eliminieren.

usort($myArray, fn($a, $b) => $a['order'] <=> $b['order']);

Mehrdimensionale Sortierung:

Für Arrays mit verschachtelten Strukturen können Sie die Sortierfunktion erweitern, um mehrere Schlüssel zu berücksichtigen. Dies ermöglicht eine komplexe Sortierung, wie z. B. das Sortieren nach „Reihenfolge“ innerhalb von „Unterordnung“.

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;
});

Hinweis: Wenn Sie Schlüsselzuordnungen beibehalten müssen, sollten Sie stattdessen die Verwendung von uasort() in Betracht ziehen usort().

Das obige ist der detaillierte Inhalt vonWie sortiere ich ein mehrdimensionales Array in PHP nach einem bestimmten Schlüssel?. 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