@burov0798
Пытаюсь изучать php\js

Как применить array_count_values для многомерного массива?

Есть массив:
Array
(
    [0] => Array
        (
            [user] => 255825309,
            [like] => 49
        )

    [1] => Array
        (
			[user] => 11998398,
			[like] => 7
        )

    [2] => Array
        (
			[user] => 173173336,
			[like] => 2
        )

    [3] => Array
        (
			[user] => 141009789,
			[like] => 25
        )

    [4] => Array
        (
			[user] => 141009789,
			[like] => 25
        )

    [5] => Array
        (
			[user] => 141009789,
			[like] => 25
        )
)

Как мне вывести наиболее встречающегося USER и сумму полей LIKE?
  • Вопрос задан
  • 449 просмотров
Пригласить эксперта
Ответы на вопрос 3
array_count_values в данной задаче неприменим, необходимо написать свое решение: написать функцию обхода массива, которая будет формировать другой массив для ваших целей.
Ответ написан
Комментировать
@iSensetivity
бухгалтер, програміст-самоук
Не проверял, но суть такова. Если количество лайков для дублей одинаково.
$newUserArray = [];
        $newLikeArray = [];
        foreach ($array as $idx => $item) {
            $userId = $item['user'];
            if (isset($newArray[$userId])) {
                $newUserArray[$userId] = ($newArray[$userId] + 1);
            } else {
                $newUserArray[$userId] = 1;
            }

            $like = $item['like'];
            $newLikeArray[$userId] = $like;
        }
        
        $mostPopularUserIdx = array_search(max($newUserArray), $newUserArray);
        echo $newUserArray[$mostPopularUserIdx];
        echo '<br/>';
        echo $newLikeArray[$mostPopularUserIdx];
Ответ написан
@burov0798 Автор вопроса
Пытаюсь изучать php\js
Решил проблему:
foreach ($arr as $key => $value){
    if (!array_key_exists($value->user, $count) ) {
        $count[$value->user] = 0;
        $sum[$value->user] = 0;
    }
    $count[$value->user] += 1;
    $sum[$value->user] += $value->like;
}
arsort($count);
var_dump(key($count));
echo '<BR>';
var_dump($sum[key($count)]);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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