Я пытаюсь из таблицы с иерархией отделов, получить все дочерние элементы из указанного c отца отдела.
таблица
id | id_department | id_department_manager
1 15 12
2 4 15
3 33 15
4 27 33
5 12 12
рекурсивный функция
function recursive (array $elements) {
$arr = $elements;
foreach ($arr as $value) {
$departments = DepartmenstDependencies::find()->where(['id_department_manager' => $value])->all();
}
foreach ($departments as $department) {
$arr[] = $department->id_department;
$arr = recursive($arr);
}
return $arr;
}
recursive([12]);
цель, например, когда я звоню recursive([15])
правильный возврат Array ( [0] => 15 [1] => 4 [2] => 33 [3] => 27 )
это нормально.
но когда я звоню recursive([12])
правильный вывод Array ( [0] => 12 [1] => 15 [2] => 4 [3] => 33 [4] => 27 )
но я получаю бесконечное l oop, это потому, что последняя строка в таблице 5, 12, 12
но как мне это предотвратить? эта рекурсивная функция верна?