sortieren ein Array nach SubaRray -Wert in php
Die Bestellung von Datenstrukturen ist eine übliche Programmieraufgabe, und Arrays werden häufig verwendet, um Informationen von Informationen zu speichern und zu verwalten. In PHP können Arrays verschachtelte Strukturen enthalten, einschließlich Arrays als Werte. Sortieren mehrdimensionaler Arrays können aus verschiedenen Gründen nützlich sein, z. B. das Organisieren von Daten oder das Extrahieren bestimmter Elemente.
Problemanweisung:
Betrachten 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' ], ];
Das Ziel ist es, dieses Array inkrementell zu sortieren, basierend auf der 'optionNumber' -Stast [ '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' ], ];
$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' ], ];Lösung:
Um das Array zu sortieren, können wir die Usort -Funktion von PHP verwenden. Usort nimmt zwei Argumente ein: das zu sortierende Array und eine Vergleichsfunktion, die die Reihenfolge der Elemente bestimmt. The comparison function should return a negative value if the first element should come before the second, zero if they are equivalent, and a positive value if the first element should come after the second.
In this case, our comparison function can be defined as follows:
function cmp_by_optionNumber($a, $b) { return $ a ['optionNumber'] - $ b ['optionNumber']; }
function cmp_by_optionNumber($a, $b) { return $a['optionNumber'] - $b['optionNumber']; }
Dies sortiert das Array an Ort und ändern die ursprüngliche $ -Rarray-Variable, um die sortierte Reihenfolge widerzuspiegeln. Die resultierende $ array -Variable ist identisch mit dem früher bereitgestellten Beispiel für $ sortEdarray. return $ a ['optionNumber'] - $ b ['optionNumber']; });
php 7.0 und höher:
$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' ], ];
in PHP -Versionen 7.0 und höher, der Raumschiff -Operator & lt; = & gt; kann anstelle der Subtraktion in der Vergleichsfunktion verwendet werden, um Überlauf/Kürzungsprobleme zu verhindern:
usort ($ array, function ($ a, $ b) { return $ a ['optionNumber'] & lt; = & gt; $ b ['OptionNumber']; });
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3