J'ai la structure de tableau suivante:
Array
(
[0] => Array
(
[configuration_id] => 10
[id] => 1
[optionNumber] => 3
[optionActive] => 1
[lastUpdated] => 2010-03-17 15:44:12
)
[1] => Array
(
[configuration_id] => 9
[id] => 1
[optionNumber] => 2
[optionActive] => 1
[lastUpdated] => 2010-03-17 15:44:12
)
[2] => Array
(
[configuration_id] => 8
[id] => 1
[optionNumber] => 1
[optionActive] => 1
[lastUpdated] => 2010-03-17 15:44:12
)
)
Quelle est la meilleure façon d'ordonner le tableau de manière incrémentielle, en fonction du optionNumber
?
Les résultats ressemblent donc à:
Array
(
[0] => Array
(
[configuration_id] => 8
[id] => 1
[optionNumber] => 1
[optionActive] => 1
[lastUpdated] => 2010-03-17 15:44:12
)
[1] => Array
(
[configuration_id] => 9
[id] => 1
[optionNumber] => 2
[optionActive] => 1
[lastUpdated] => 2010-03-17 15:44:12
)
[2] => Array
(
[configuration_id] => 10
[id] => 1
[optionNumber] => 3
[optionActive] => 1
[lastUpdated] => 2010-03-17 15:44:12
)
)
< 0
, il indique la fonction de tri quia
doit apparaître avantb
. Si elle est> 0
alorsb
devrait apparaître avanta
.Utilisation
usort
la source
J'ai utilisé les deux solutions de KennyTM et AJ Quick et j'ai proposé une fonction qui peut aider dans ce problème dans de nombreux cas, comme l' utilisation du tri ASC ou DESC ou la préservation des clés ou si vous avez des objets comme enfants de array .
Voici cette fonction (fonctionne pour PHP7 et supérieur à cause de l'opérateur du vaisseau spatial):
Usage:
Éditer
La première partie peut être réécrite en utilisant
uasort()
et la fonction sera plus courte (fonctionne pour PHP7 et plus à cause de l'opérateur du vaisseau spatial):la source
>
(supérieur à) au lieu de-
(moins) lors de la comparaison$a
et des$b
valeurs puisque je comparais des chaînes. Fonctionne toujours cependant.Les touches sont supprimées lors de l'utilisation d'une fonction comme celles ci-dessus. Si les touches sont importantes, la fonction suivante la maintiendra ... mais les boucles foreach sont assez inefficaces.
Utilisez arsort au lieu de asort si vous voulez du haut vers le bas.
Crédit de code: http://www.firsttube.com/read/sorting-a-multi-dimensional-array-with-php/
la source
Utilisation de array_multisort (), array_map ()
DEMO
la source
PHP 5.3+
la source