$form */ $form = iterator_to_array($forms); $form['center']->setData($viewData); // NOTE: we do not map back the regroupments } public function mapFormsToData(\Traversable $forms, &$viewData): void { /** @var array $forms */ $forms = iterator_to_array($forms); $centers = []; foreach ($forms['center']->getData() as $center) { $centers[spl_object_hash($center)] = $center; } if (\array_key_exists('regroupment', $forms)) { /** @var Regroupment $regroupment */ foreach ($forms['regroupment']->getData() as $regroupment) { foreach ($regroupment->getCenters() as $center) { $centers[spl_object_hash($center)] = $center; } } } $viewData = array_values($centers); } }