Дана строка с целыми числами от 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);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости