actorRepository->findOneRandom(4); // Actors for the grid $actors = []; $leftSize = 0; $rightSize = 0; foreach (str_split(strtolower($mainActor->getName())) as $char) { if (!preg_match('/[a-z]/', $char)) { continue; } $tryFindActor = 0; do { $actor = $this->actorRepository->findOneRandom(4, $char); ++$tryFindActor; } while ( $actor === $mainActor || in_array($actor, array_map(fn ($actorMap) => $actorMap['actor'], $actors)) || $tryFindActor < 5 ); $actorData = [ 'actor' => $actor, 'pos' => strpos($actor->getName(), $char), ]; if ($leftSize < $actorData['pos']) { $leftSize = $actorData['pos']; } $rightSizeActor = strlen($actor->getName()) - $actorData['pos'] - 1; if ($rightSize < $rightSizeActor) { $rightSize = $rightSizeActor; } $actors[] = $actorData; } // Predict grid size $width = $rightSize + $leftSize + 1; $middle = $leftSize; return $this->render('homepage/index.html.twig', [ 'mainActor' => $mainActor, 'actors' => $actors, 'width' => $width, 'middle' => $middle, ]); } }