У меня есть функция рекурсии. Есть иерархическая структура пользователей. Я отправляю идентификатор пользователя в свою функцию, и он должен найти всех пользователей под этим. Функция возвращает массив всех ассоциированных пользователей. Моя задача - найти уровни этих пользователей.
Например:
User1
/ \
User2 User3
/ \ \
User4 User5 User6
Пользователь1 имеет уровень 0.
Пользователь2, Пользователь3 имеют уровень 1.
Пользователь4, Пользователь5, Пользователь6 имеют уровень 2.
Как я могу найти это в моей рекурсии?
Это мой код:
private function getAssociates($userId) {
global $generation;
global $usersUnder;
if (!isset($generation)) {
$generation = 1;
}
$userDb = new Lyf_DB_Table('user');
$associatesSelect = $userDb->Select();
$associatesSelect -> from('user', array('id'))->where('enroller_id = ?', $userId);
$associates = $userDb->fetchAll($associatesSelect)->toArray();
if (!empty($associates)) {
foreach ($associates as $associate) {
$usersUnder[$generation] = $associate['id'];
$this->getAssociates($associate['id']);
}
}
return $usersUnder;
}