$summaryCounts * @return array */ public static function normalize(array $summaryCounts): array { $allowedKeys = array_flip(OperationSummaryKeys::all()); $sanitized = []; foreach ($summaryCounts as $key => $value) { $key = trim((string) $key); if ($key === '' || ! isset($allowedKeys[$key])) { continue; } if (is_int($value)) { $sanitized[$key] = $value; continue; } if (is_float($value) && is_finite($value)) { $sanitized[$key] = (int) round($value); continue; } if (is_numeric($value)) { $sanitized[$key] = (int) $value; } } return $sanitized; } /** * @param array $summaryCounts */ public static function renderSummaryLine(array $summaryCounts): ?string { $normalized = self::normalize($summaryCounts); if ($normalized === []) { return null; } $parts = []; foreach ($normalized as $key => $value) { $parts[] = $key.': '.$value; } if ($parts === []) { return null; } return 'Summary: '.implode(', ', $parts); } }