In PHP sind Arrays eine unverzichtbare Datenstruktur zum Organisieren und Bearbeiten von Daten. Manchmal ist es notwendig, diese Arrays basierend auf den Werten in ihren Unterarrays zu sortieren. In diesem Artikel werden die effektivsten Methoden zum Sortieren von Arrays nach Subarray-Werten untersucht, wobei der Schwerpunkt insbesondere auf dem Feld „optionNumber“ liegt.
Betrachten Sie zunächst das folgende Beispiel:
$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" ] ];
Das Ziel besteht darin, zu ordnen das $array in einer inkrementellen Reihenfolge basierend auf der OptionNumber, was zu dem folgenden sortierten Array führt:
$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" ] ];
Um diese Sortierung zu erreichen, muss das Die PHP-Usort-Funktion erweist sich als effektives Werkzeug. So kann es implementiert werden:
function cmp_by_optionNumber($a, $b) { return $a["optionNumber"] - $b["optionNumber"]; } usort($array, "cmp_by_optionNumber");
In dieser Methode ist cmp_by_optionNumber eine benutzerdefinierte Vergleichsfunktion, die die optionNumber-Werte der beiden Eingabearrays vergleicht. Die Funktion gibt einen negativen Wert zurück, wenn die optionNumber des ersten Arrays kleiner als die zweite ist, eine Null, wenn sie gleich sind, und einen positiven Wert, wenn die optionNumber des ersten Arrays größer als die zweite ist. Durch die Verwendung dieser Vergleichsfunktion sortiert usort das $array effizient in aufsteigender Reihenfolge des OptionNumber-Felds.
Für PHP-Versionen 5.3 und höher wird empfohlen, anonyme Funktionen für einen saubereren Ansatz zu verwenden:
usort($array, function ($a, $b) { return $a['optionNumber'] - $b['optionNumber']; });
Es ist jedoch wichtig zu beachten, dass die Subtraktion in den Vergleichsfunktionen zu falschen Ergebnissen führen kann, wenn die optionNumber-Werte Zeichenfolgen sind. Erwägen Sie in solchen Fällen die Verwendung des folgenden Ansatzes:
usort($array, function ($a, $b) { return strcmp($a['optionNumber'], $b['optionNumber']); });
Schließlich ist in PHP-Versionen 7.0 und höher der Raumschiffoperator <=> kann anstelle der Subtraktion genutzt werden, um Überlauf-/Kürzungsprobleme zu vermeiden, insbesondere beim Umgang mit großen Zahlen:
usort($array, function ($a, $b) { return $a['optionNumber'] <=> $b['optionNumber']; });
Durch die Implementierung einer der beschriebenen Methoden können Sie PHP-Arrays effektiv basierend auf Subarray-Werten sortieren und so dies sicherstellen Ihre Daten werden sinnvoll und komfortabel organisiert.
Das obige ist der detaillierte Inhalt vonWie sortiere ich ein PHP-Array nach dem „optionNumber'-Wert eines Subarrays?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!