Дана строка с целыми числами от 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);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Возникла проблема при отображении загруженных изображенийГружу изображения на диск public
Есть таблица, которая хранит в себе адреса городов
Есть магазин на wordpress+woocommerceДля того, чтобы для потенциального покупателя сделать некоторые удобные вещи во время покупки, я запоминаю его...