又是递归的问题,嘿嘿

天降大任于斯 2007-04-07 01:42:01
$tbl:
user_id leader_id
6 20
7 20
19 21
20 24
21 24
23 20
24 0

函数功能:找出所有的属下,如24的第一级属下为20,21,第二级属下为19,7,6,23
function his_team( $user_id,$his_team)
{
$query = "SELECT user_id FROM $tbl WHERE leader_id=$user_id";
$result = mysql_query( $query);
while( $array = mysql_fetch_array( $result))
{
$his_team .= $array['user_id'];
his_team( $array['user_id'],$his_team);
}
return $his_team;
}

echo his_team( 24,""); 结果为:20,21,哪里错了?并且过程中的数据为:
20
20,6
20,6,7
20,6,7,23
20,21
20,21,19
就是说好像有数据丢失了,怎么回事?

假如我把函数改为function his_team( $user_id,&his_team) 则能返回正常的

...全文
203 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fredyj 2007-04-08
  • 打赏
  • 举报
回复
global $his_team
helloyou0 2007-04-08
  • 打赏
  • 举报
回复
his_team( $array['user_id'],$his_team);
你这句根据就没有接受return回来的值

$his_term .= his_team( $array['user_id'],$his_team);

天降大任于斯 2007-04-08
  • 打赏
  • 举报
回复
为什么前面那段没有超出呢?
而到了后面那段就超出了?
indexroot 2007-04-07
  • 打赏
  • 举报
回复
函数参数超出作用域,值就没有了
所以正确的做法是使用引用,或者声明全局变量
(全局变量的内部实现就是用引用)

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧