Mam następującą strukturę tablicy:
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
)
)
Jaki jest najlepszy sposób uporządkowania tablicy w sposób przyrostowy na podstawie optionNumber
?
Więc wyniki wyglądają następująco:
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
, informuje funkcję sortowania, któraa
powinna pojawić się wcześniejb
. Jeśli jest> 0
wtedyb
powinien pojawić się przeda
.Posługiwać się
usort
źródło
Użyłem obu rozwiązań KennyTM i AJ Quick i wymyśliłem funkcję, która może pomóc w tym problemie w wielu przypadkach, takich jak używanie sortowania lub zachowywania kluczy ASC lub DESC lub jeśli masz obiekty jako elementy podrzędne tablicy .
Oto ta funkcja (działa dla PHP7 i nowszych z powodu operatora statku kosmicznego):
Stosowanie:
Edytować
Pierwszą część można przepisać za pomocą,
uasort()
a funkcja będzie krótsza (działa dla PHP7 i wyższych z powodu operatora statku kosmicznego):źródło
>
(większe niż) zamiast-
(minus) podczas porównywania$a
i$b
wartości, ponieważ porównywałem ciągi. Jednak nadal działa.Klawisze są usuwane podczas korzystania z funkcji takiej jak te powyżej. Jeśli klucze są ważne, zachowa je następująca funkcja ... ale wszystkie pętle są dość nieefektywne.
Jeśli chcesz od największego do najmniejszego, użyj opcji arsort zamiast asortymentu.
Źródło kodu: http://www.firsttube.com/read/sorting-a-multi-dimensional-array-with-php/
źródło
Korzystanie z array_multisort (), array_map ()
PRÓBNY
źródło
PHP 5.3+
źródło