Wie sortiere ich mehrdimensionale Arrays basierend auf dem Wert des inneren Arrays in PHP?

Barbara Streisand
Freigeben: 2024-11-03 21:30:29
Original
386 Leute haben es durchsucht

How to Sort Multi-Dimensional Arrays Based on Inner Array Value in PHP?

Sortieren mehrdimensionaler Arrays basierend auf dem inneren Array-Wert in PHP

Arrays in PHP bieten eine leistungsstarke Datenstruktur zum Organisieren und Speichern von Daten. Das Sortieren mehrdimensionaler Arrays basierend auf einem bestimmten Wert innerhalb eines inneren Arrays kann jedoch eine herausfordernde Aufgabe sein.

Problembeschreibung

Stellen Sie sich eine PHP-Hashtabelle mit der folgenden Datenstruktur vor:

[
    [
        "type" => "suite",
        "name" => "A-Name"
    ],
    [
        "type" => "suite",
        "name" => "C-Name"
    ],
    [
        "type" => "suite",
        "name" => "B-Name"
    ]
]
Nach dem Login kopieren

Ziel ist es, diese Datenstruktur basierend auf dem Schlüssel „Name“ im inneren Array zu sortieren.

Sortiermethoden

Verschiedene PHP-Funktionen können zum Sortieren von Arrays verwendet werden:

  • ksort: Sortiert assoziative Arrays (Hashtabellen) nach Schlüssel.
  • sort: Sortiert Arrays nach Werten.
  • usort: Sortiert Arrays mithilfe einer benutzerdefinierten Vergleichsfunktion.

Keine dieser Funktionen unterstützt jedoch direkt die Sortierung basierend auf einem Schlüssel innerhalb eines inneren Arrays.

Benutzerdefinierte Sortierfunktion

Um diese Einschränkung zu überwinden, kann eine benutzerdefinierte Sortierfunktion definiert werden, um die gewünschten Werte innerhalb des inneren Arrays zu vergleichen. Dies kann mit der Funktion usort erreicht werden.

<code class="php">function cmp($a, $b) {
    return $b['name'] - $a['name'];
}</code>
Nach dem Login kopieren

Diese Funktion vergleicht den „Name“-Schlüssel in den inneren Arrays und gibt einen negativen Wert zurück, wenn der Name des ersten Arrays größer als der ist Name des zweiten Arrays.

Sortieren des Arrays

Sobald die Vergleichsfunktion definiert ist, kann sie zum Sortieren des Arrays mithilfe der Funktion usort verwendet werden.

<code class="php">usort($mydata, "cmp");</code>
Nach dem Login kopieren

Eine alternative Lösung

Eine alternative Lösung zur benutzerdefinierten Sortierfunktion besteht darin, ein neues Array zu erstellen, das nur die zu sortierenden Werte enthält. Dies kann mit einer verschachtelten Schleife und einer bedingten Anweisung erfolgen.

<code class="php">function array_sort($array, $on, $order=SORT_ASC) {
    // ...
    return $new_array;
}</code>
Nach dem Login kopieren

Diese Funktion übernimmt das zu sortierende Array, den Sortierschlüssel und eine optionale Reihenfolge (aufsteigend oder absteigend). Es wird ein neues Array mit den sortierten Daten zurückgegeben.

Verwendung

Die Funktion array_sort kann wie folgt verwendet werden:

<code class="php">$mydata = [
    ['type' => 'suite', 'name' => 'A-Name'],
    ['type' => 'suite', 'name' => 'C-Name'],
    ['type' => 'suite', 'name' => 'B-Name']
];

$sorted_data = array_sort($mydata, 'name', SORT_ASC);

print_r($sorted_data);</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie sortiere ich mehrdimensionale Arrays basierend auf dem Wert des inneren Arrays in PHP?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!