大师!首先,我花了半天时间 googlin'n'stackoverflowing 但找不到解决方案。这是我第一次使用递归。希望有人可以提供帮助。
我有一个 MySQL 表,这是一种参考系统:
Table 'users'
ID SPONSORID
---------
1 2
2 1
3 1
4 1
... ...
有几件事情要记住:
- 用户 1 和 2 是彼此的赞助商/推荐人。
- 每个用户可以有无限数量的推荐。
- 每个用户的推荐人也成为赞助商,并且还可以拥有无限数量的推荐人
- 深度是无限的。
任务是递归地构建单个“团队”的树,例如:
User 1
User 2
User 1
User 5
...
....
User 3
User 295
User 356
....
User 4
等等...
这是我正在尝试做的事情:
$team = Array();
function build_team( $userID, $team ){
if ( !in_array($userID, $team ) :
// get 1st level of referals
// returns associative array ('id', 'login', 'sponsorid')
$referals = get_user_referals( $userID );
for ( $i=0; $i<count($referals); $i++ ) :
$team[] = $referals[$i];
build_team( $referals[$i]['id'] );
endfor;
endif;
}
并且还尝试将该 IF 放在 FOR 块中,但它仍然处于无限循环中。据我了解,当没有深度级别但我不明白如何计算/确定它时,我需要一个条件来退出递归。有什么建议么?