Сортировка массива сразу по двум ключам с приоритетом

115
16 ноября 2021, 11:40

Столкнулся с задачей. Нужно отсортировать многомерный массив сразу по двум значениям. Есть массив

[{"last_season":2,"id":380,"name":"test2","episode_count":6},{"last_season":3,"id":381,"name":"test3","episode_count":11},{"last_season":1,"id":434,"name":"test1","episode_count":7},{"last_season":3,"id":433,"name":"test4","episode_count":9}]

Я сортирую массив по ключу last_season при помощи функции

function cmp($a, $b) {
    return strnatcmp($b["last_season"], $a["last_season"]);
}

На выходе получаю значения last_season от большего к меньшему. Задача отсортировать массив сразу по двум ключам last_season и episode_count, от большего к меньшему, с приоритетом по полю last_season. Если два одинаковых значения у last_season дальше сортировать по episode_count. На выходе хочу увидеть

[{"last_season":3,"id":381,"name":"test3","episode_count":11},{"last_season":3,"id":433,"name":"test4","episode_count":9},{"last_season":2,"id":380,"name":"test2","episode_count":6},{"last_season":1,"id":434,"name":"test1","episode_count":7}]
Answer 1
usort($array, function($a, $b) {
    return [$b['last_season'], $b['episode_count']] <=> [$a['last_season'], $a['episode_count']];
});
READ ALSO
Нужна помощь с алгоритмом на Java

Нужна помощь с алгоритмом на Java

Мне приходят данные в txt в виде:

191
Комбинации регулярных выражений (Pattern) Java

Комбинации регулярных выражений (Pattern) Java

Имеется метод StringreplaceAll(String regex, String replacement)

198
Уменьшение времени на обход двух изображений при сравнении

Уменьшение времени на обход двух изображений при сравнении

Есть класс, где происходит сравнение двух изображений Bitmap

212