$metrics * @return array */ public static function normalizeMetrics(array $metrics): array { $normalized = []; foreach ($metrics as $key => $value) { $metricId = self::extractMetricId($key); if ($metricId === null) { continue; } $normalized[$metricId] = $value; } ksort($normalized); return $normalized; } /** * @param array $metrics * @return array */ public static function toPayloadMetrics(array $metrics): array { $payload = []; foreach (self::normalizeMetrics($metrics) as $metricId => $value) { $payload[self::payloadKey($metricId)] = $value; } return $payload; } public static function extractMetricId(int|string $key): ?int { if (is_int($key) || ctype_digit((string) $key)) { return (int) $key; } if (preg_match('/^metrika_item_(\d+)$/', (string) $key, $matches) !== 1) { return null; } return (int) $matches[1]; } }