Heim >Backend-Entwicklung >PHP-Tutorial >Wie sortiere ich mehrdimensionale Arrays basierend auf dem Wert des inneren Arrays in PHP?

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

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 21:30:29451Durchsuche

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"
    ]
]

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>

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>

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>

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>

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!

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
Vorheriger Artikel:ZirkelsatzNächster Artikel:Zirkelsatz