Есть компании, у них есть подкомпании, у тех еще подкомпании и т.д.. Нужно рекурсивно собрать все айдишники подкомпаний заданной компании. Написал такую функцию, но мне плагин PHP Inspections пишет, что array_merge нельзя юзать в цикле, т. к. он жутко медленный.
Как же избавиться от array_merge в цикле, если в случае с индексированными массивами оператор + (+=) не катит?
/**
* Recursively get all sub-companies IDs
*/
private function getSubcompaniesIds(CompanyInterface $company): array
{
$ids = [];
$childCompanies = $this->companyRelationsResolver->getChildCompanies($company)->getItems();
foreach ($childCompanies as $childCompany) {
$ids[] = $childCompany->getId();
$ids = array_merge($ids, $this->{__FUNCTION__}($childCompany));
}
return $ids;
}