Отсортировать массив по частоте

154
02 июля 2019, 13:40

Дана строка с целыми числами от 1 до 500, разделенных запятыми. Числа могут повторяться.

Требуется взять 10 самых часто встречающихся и поместить в массив отсортированный по убыванию частоты.

Не придумал ничего лучше, кроме как посчитать частоту в отдельном массиве, в котором число является ключем, а частота - значением. Отсортировать arsort(). Топ-10 пришлось в отдельном цикле выделять, т.к. array_slice не сохраняет ключи.

Может есть какая-нибудь встроенная функция для таких вещей или можно как-то проще сделать?

ps: Код страшный, показывать стыдно.

UPDATE:

Огромное спасибо, в комментарияx помогли.

$arr = array_count_values(explode(',', $str));
arsort($arr);
$res = array_slice($arr, 0, 10, TRUE);
READ ALSO
Проверка структуры таблицы

Проверка структуры таблицы

Требуется функция или библиотека, чтобы подключить в проект

146
Laravel storage

Laravel storage

Возникла проблема при отображении загруженных изображенийГружу изображения на диск public

159
Как вывести переменную во все файлы шаблона laravel

Как вывести переменную во все файлы шаблона laravel

Есть таблица, которая хранит в себе адреса городов

134
Из php не видит функцию javascript - как исправить?

Из php не видит функцию javascript - как исправить?

Есть магазин на wordpress+woocommerceДля того, чтобы для потенциального покупателя сделать некоторые удобные вещи во время покупки, я запоминаю его...

149