Сортировка многомерного массива

У меня есть многомерный массив

Array
(
[M] => Array
(
[0] => Array
(
[first] => Paul
[last] => Martha
[progress] => 100
[id] => 85162
[category] => M
)

[1] => Array
(
[first] => Bob
[last] => Marley
[progress] => 47
[id] => 846523
[category] => M
)

)

[M~F1] => Array
(
[0] => Array
(
[first] => Kenneth
[last] => Rodriguez
[progress] => 42
[id] => 110273
[category] => M~F1
)

[1] => Array
(
[first] => Jenifer
[last] => Lopez
[progress] => 0
[id] => 485623
[category] => M~F1
)

)

)

Однако я хочу, чтобы каждый из меньших массивов сортировал себя по алфавиту на основе ключей из массива внутри них. Возьмите массив М, например. Я хочу, чтобы PHP упорядочил свои подкомпоненты по алфавиту компонента «Фамилия». Таким образом, массив M будет организовывать свои подмассивы путем алфавитного размещения подмассива подобласти. После завершения это должно выглядеть так:

Array
(
[M] => Array
(
[0] => Array
(
[first] => Bob
[last] => Marley
[progress] => 47
[id] => 846523
[category] => M
)

[1] => Array
(
[first] => Paul
[last] => Martha
[progress] => 100
[id] => 85162
[category] => M
)

)

[M~F1] => Array
(
[0] => Array
(
[first] => Jenifer
[last] => Lopez
[progress] => 0
[id] => 485623
[category] => M~F1
)

[1] => Array
(
[first] => Keneth
[last] => Rodriguez
[progress] => 42
[id] => 110273
[category] => M~F1
)

)

)

Итак, для обзора мне нужно организовать массив subub, просмотрев массив sububsub, собрав его ключ [last] и отсортировав массив subub по алфавиту ключа [last] массива sububsub.

1

Решение

Пусть массив, который вы определили, будет $ x.

// first, define our comparison function
$cmp = function ($a, $b) {
// sort by last name, first name
$a = trim($a['last'] . ' ' . $a['first']);
$b = trim($b['last'] . ' ' . $b['first']);
return strcmp($a, $b);
};
foreach ($x as &$subx) {
// initialize sub array with reference
usort($subx, $cmp);
}
0

Другие решения

Других решений пока нет …