Ale*_*tau 2 php arrays recursion zend-framework
我有递归功能.有一个层次结构的用户结构.我将一个用户ID发送到我的函数,它应该找到所有用户.函数返回所有关联用户的数组.我的任务是找到这个用户的级别.
例如:
User1
/ \
User2 User3
/ \ \
User4 User5 User6
Run Code Online (Sandbox Code Playgroud)
User1的级别为0. User2,User3的级别为1. User4,User5,User6的级别为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;
}
Run Code Online (Sandbox Code Playgroud)
在getAssociates()
函数中添加一个额外的参数:
private function getAssociates($userID, $level = 0) {
Run Code Online (Sandbox Code Playgroud)
当你处理树的那个级别时,将其$level
与其余的用户数据一起存储,然后通过以下方式递归到函数中:
$this->getAssociates($associate['id'], $level + 1);
Run Code Online (Sandbox Code Playgroud)
当你开始调用函数来启动这个过程中,传递0
的$level
,或将其留空,让PHP分配默认(还0
).