$fields * @return array> */ public static function groupFieldsByPageId(array $fields): array { $fieldsByPage = []; foreach ($fields as $field) { $pageId = $field['pageId'] ?? ($field['settings']['pageId'] ?? null); if ($pageId) { if (!isset($fieldsByPage[$pageId])) { $fieldsByPage[$pageId] = []; } $fieldsByPage[$pageId][] = $field; } } return $fieldsByPage; } /** * Assign grouped fields to pages * * @param array $pages * @param array> $fieldsByPage * @return array */ public static function assignFieldsToPages(array $pages, array $fieldsByPage): array { foreach ($pages as &$page) { $pageId = $page['id'] ?? null; $page['fields'] = $fieldsByPage[$pageId] ?? []; } return $pages; } }