Есть массив:
array(3) {
[0] => array(1) {
[3] => array(5) {
["id"] => string(1)
"7" ["name"] => string(4)
"Тест3" ["weight"] => int(3)["mincount"] => string(1)
"8" ["maxcount"] => string(2)
"40"
}
}[1] => array(1) {
[5] => array(5) {
["id"] => string(1)
"9" ["name"] => string(23)
"Тест5" ["weight"] => int(3)["mincount"] => string(2)
"12" ["maxcount"] => string(3)
"300"
}
}[2] => array(1) {
[10] => array(5) {
["id"] => string(2)
"14" ["name"] => string(12)
"Тест10" ["weight"] => int(1)["mincount"] => string(2)
"20" ["maxcount"] => string(2)
"40"
}
}}
Нужно его отсортировать по полю weight, чтобы большее стояло в начале. Пробовал с usort, пока не совсем разобрался как работает. Подскажите как решить данную задачку.
Можно воспользоваться array_multisort
$weights = array_map(function($i) { return current($i)['weight'];}, $arr);
array_multisort($weights, SORT_DESC, SORT_NUMERIC, $arr);
print_r($arr);
demo
Сборка персонального компьютера от Artline: умный выбор для современных пользователей