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
Freigeben: 2024-12-20 11:35:08
Original
122 Leute haben es durchsucht

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
    ]
];
Nach dem Login kopieren

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');
Nach dem Login kopieren

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;
});
Nach dem Login kopieren

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'];
});
Nach dem Login kopieren

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']);
Nach dem Login kopieren

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;
});
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage