Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich ein mehrdimensionales PHP-Array nach dem Wert eines Subarrays sortieren?

Wie kann ich ein mehrdimensionales PHP-Array nach dem Wert eines Subarrays sortieren?

Linda Hamilton
Freigeben: 2024-12-07 05:42:14
Original
846 Leute haben es durchsucht

How Can I Sort a Multidimensional PHP Array by a Subarray's Value?

Sortieren eines Arrays nach Subarray-Wert in PHP

Das Ordnen von Datenstrukturen ist eine häufige Programmieraufgabe, und Arrays werden häufig zum Speichern und Verwalten verwendet Informationssammlungen. In PHP können Arrays verschachtelte Strukturen enthalten, einschließlich Arrays als Werte. Das Sortieren mehrdimensionaler Arrays kann aus verschiedenen Gründen nützlich sein, beispielsweise zum Organisieren von Daten oder zum Extrahieren bestimmter Elemente.

Problemstellung:

Bedenken Sie die folgende Array-Struktur:

$array = [
    [
        'configuration_id' => 10,
        'id' => 1,
        'optionNumber' => 3,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
    [
        'configuration_id' => 9,
        'id' => 1,
        'optionNumber' => 2,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
    [
        'configuration_id' => 8,
        'id' => 1,
        'optionNumber' => 1,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
];
Nach dem Login kopieren

Das Ziel besteht darin, dieses Array basierend auf dem Schlüssel „optionNumber“ inkrementell zu sortieren, was zu Folgendem führt: Folgendes:

$sortedArray = [
    [
        'configuration_id' => 8,
        'id' => 1,
        'optionNumber' => 1,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
    [
        'configuration_id' => 9,
        'id' => 1,
        'optionNumber' => 2,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
    [
        'configuration_id' => 10,
        'id' => 1,
        'optionNumber' => 3,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
];
Nach dem Login kopieren

Lösung:

Um das Array zu sortieren, können wir die usort-Funktion von PHP verwenden. usort benötigt zwei Argumente: das zu sortierende Array und eine Vergleichsfunktion, die die Reihenfolge der Elemente bestimmt. Die Vergleichsfunktion sollte einen negativen Wert zurückgeben, wenn das erste Element vor dem zweiten stehen sollte, Null, wenn sie äquivalent sind, und einen positiven Wert, wenn das erste Element nach dem zweiten stehen sollte.

In diesem Fall unser Vergleich Die Funktion kann wie folgt definiert werden:

function cmp_by_optionNumber($a, $b) {
  return $a['optionNumber'] - $b['optionNumber'];
}
Nach dem Login kopieren

Diese Funktion subtrahiert den „optionNumber“-Wert des ersten Arrays vom zweiten, was zu einem negativen Wert führt, wenn das erste Element vor dem zweiten stehen sollte, einem Nullwert Wenn Sie sind gleich und ein positiver Wert, wenn das erste Element nach dem zweiten kommen sollte.

Um diese Vergleichsfunktion mit usort zu verwenden, übergeben wir sie einfach als zweites Argument:

usort($array, 'cmp_by_optionNumber');
Nach dem Login kopieren

Dadurch wird das Array direkt sortiert und die ursprüngliche Variable $array so geändert, dass sie die sortierte Reihenfolge widerspiegelt. Die resultierende $array-Variable ist identisch mit dem zuvor bereitgestellten $sortedArray-Beispiel.

Alternative Syntax:

In PHP-Versionen 5.3 und höher kann eine anonyme Funktion verwendet werden anstelle der genannten Vergleichsfunktion:

usort($array, function ($a, $b) {
  return $a['optionNumber'] - $b['optionNumber'];
});
Nach dem Login kopieren

PHP 7.0 und Oben:

In PHP-Versionen 7.0 und höher ist der Raumschiffoperator <=> kann anstelle der Subtraktion in der Vergleichsfunktion verwendet werden, um Überlauf-/Kürzungsprobleme zu vermeiden:

usort($array, function ($a, $b) {
  return $a['optionNumber'] <=> $b['optionNumber'];
});
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich ein mehrdimensionales PHP-Array nach dem Wert eines Subarrays sortieren?. 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