Простая сортировка многомерного массива по значению вложенного элемента
Данный код демонстрирует сортировку массива $sorting_array по убыванию значения ‘value’
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$sorting_array = array( array('value' => 3, 'value2' => 'some more value'), array('value' => 2, 'value2' => 'some more value'), array('value' => 7, 'value2' => 'some more value'), array('value' => 1, 'value2' => 'some more value'), array('value' => 4, 'value2' => 'some more value'), array('value' => 5, 'value2' => 'some more value') ); usort( $sorting_array , function ($a, $b) { if ($a['value'] == $b['value']) { return 0; } return ($a['value'] > $b['value']) ? -1 : 1; // Use $a['value'] < $b['value']for ASC sorting } ); print_r($sorting_array); |
В результате выполнения данного кода будет получен следующий вывод:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
Array ( [0] => Array ( [value] => 7 [value2] => some more value ) [1] => Array ( [value] => 5 [value2] => some more value ) [2] => Array ( [value] => 4 [value2] => some more value ) [3] => Array ( [value] => 3 [value2] => some more value ) [4] => Array ( [value] => 2 [value2] => some more value ) [5] => Array ( [value] => 1 [value2] => some more value ) ) |
Если Вы используете php 7, то функцию сортировки можно упростить до следующего вида:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$sorting_array = array( array('value' => 3, 'value2' => 'some more value'), array('value' => 2, 'value2' => 'some more value'), array('value' => 7, 'value2' => 'some more value'), array('value' => 1, 'value2' => 'some more value'), array('value' => 4, 'value2' => 'some more value'), array('value' => 5, 'value2' => 'some more value') ); usort( $sorting_array , function ($a, $b) { return $b['value'] <=> $a['value']; // Use $a['value'] <=> $b['value'] for ASC sorting } ); print_r($sorting_array); |
Посмотреть результат выполнения кода и поэкспериментировать можно по ссылкам:
Документация по функции usort()
Внимание! При использовании функции usort теряются ключи элементов массива. Для сортировки с сохранением связи ключ-значение вместо функции usort следует использовать функцию uksort. При этом весь код кроме названия функции остается неизменным.