public static function getFacebookLikesGroupedBySubmitter(array $gifs, Router $router) { $json = FacebookHelper::getLikes($gifs, $router); $submitters = []; foreach ($json as $item) { $url = $item['url']; $likesCount = intval($item['total_count']); /** @var Gif $gif */ $gif = FacebookHelper::findGif($gifs, $url); if (!array_key_exists($gif->getSubmittedBy(), $submitters)) { $submitters[$gif->getSubmittedBy()] = ['gifs' => [], 'likes' => 0]; } $submitters[$gif->getSubmittedBy()]['gifs'][] = $gif; $submitters[$gif->getSubmittedBy()]['likes'] += $likesCount; } // Sort array $submittersIndexed = []; foreach ($submitters as $submitter => $infos) { $submittersIndexed[] = ['submitter' => $submitter, 'gifs' => $infos['gifs'], 'likes' => $infos['likes']]; } usort($submittersIndexed, function ($a, $b) { return $b['likes'] - $a['likes']; }); return $submittersIndexed; }