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. 4. Verwendung von Pfeilfunktionen (PHP 7.4 und höher): Pfeilfunktionen vereinfachen den Code weiter, indem sie das Funktionsschlüsselwort eliminieren. 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“. 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!usort($myArray, function($a, $b) {
return $a['order'] <=> $b['order'];
});
usort($myArray, fn($a, $b) => $a['order'] <=> $b['order']);
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;
});