}> $campaigns campagnes en cours * @param array $userGroupIds */ public function select(array $campaigns, array $userGroupIds): ?int { $groups = array_flip($userGroupIds); $best = null; foreach ($campaigns as $c) { if ($c['group_ids'] !== [] && ! array_intersect_key($groups, array_flip($c['group_ids']))) { continue; } if ($best === null || $c['priority'] > $best['priority'] || ($c['priority'] === $best['priority'] && $c['id'] < $best['id'])) { $best = $c; } } return $best['id'] ?? null; } }