> $payload * * @return array>> */ public function transform(array $payload): array { $result = []; foreach ($payload as $item) { if ('HIN' !== ($item['PlanungsArt'] ?? null)) { continue; } $travelCodes = $item['Reisecodes'] ?? []; if (0 === count($travelCodes)) { continue; } $dateTime = \DateTimeImmutable::createFromFormat('d.m.Y H:i', $item['Zeit'] ?? ''); foreach ($travelCodes as $code) { $pickup = [ 'city' => $item['Zustieg/Ausstieg Ort'] ?? '', 'location' => $item['Zustieg/Ausstieg Strasse'] ?? '', 'datetime' => false !== $dateTime ? $dateTime->format('Y-m-d H:i') : '', ]; $key = sprintf('%s|%s|%s', $pickup['city'], $pickup['location'], $pickup['datetime']); if (false === isset($result[$code][$key])) { $result[$code][$key] = $pickup; } } } foreach ($result as $code => $pickups) { $pickups = array_values($pickups); usort($pickups, static fn (array $a, array $b): int => $a['datetime'] <=> $b['datetime']); $result[$code] = $pickups; } return $result; } }