@GRO24

Как вывести наиболее частые повторы JSON?

Привет всем.
Столкнулся с задачей, которую до этого никогда не реализовывал

Есть JSON ответ
{
    "result": [{
        "id": "103513",
        "user": "user_repeat",
        "time_upd": "2020-12-09 08:45:02"
    }, {
        "id": "103517",
        "user": "user_repeat",
        "time_upd": "2020-12-09 08:45:02"
    , {
        "id": "103522",
        "user": "user_no_repeat",
        "time_upd": "2020-12-09 08:45:02
}]
}


Я хочу найти наиболее повторяющийся ник в примере это "user": "user_repeat" и вывести все его ID
Что бы ответ примерно выглядел так
Самый частый юзер: id, id, id
Второй по частоте юзер: id, id, id
Третий по частоте: id, id, id

Кому не сложно, помогите как реализовать
Спасибо за внимание
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега PHP
$encodedData = '{"result":[{"id":"103513","user":"user_repeat","time_upd":"2020-12-09 08:45:02"},{"id":"103517","user":"user_repeat","time_upd":"2020-12-09 08:45:02"},{"id":"103522","user":"user_no_repeat","time_upd":"2020-12-09 08:45:02"}]}';
$decodedData = json_decode($encodedData, true);
$userRepeats = [];

foreach ($decodedData['result'] as $info) {
    if (!array_key_exists($info['user'], $userRepeats)) {
        $userRepeats[$info['user']] = 0;
    }
    
    $userRepeats[$info['user']]++;
}

arsort($userRepeats);
$mexRepeatsUser = [key($userRepeats)=>current($userRepeats)];

var_dump($userRepeats);
var_dump($mexRepeatsUser);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы