人物ID为2 要查询出人物ID2 邀请的人和人物ID2邀请的人邀请的人物ID.请给我个具体的思路。。。

幻成魔 2016-08-31 11:22:03

大家好,问题清楚点说就是我想通过id2 获取下面的人物id3,4,5,6,7,8,9.的数据

首先我不是自己不动手,不动脑。我写思路写了三张A4纸,调试很久,可能我很笨。我真的不会,我只知道要用递归,我也写了 然后没反应。求看见的帮帮忙给我个思路。或者教教我。谢谢大家
...全文
599 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
fwhezfwhez 2018-05-23
  • 打赏
  • 举报
回复
首先人物结构是 { id string inviteIds []string } 在获取人物的时候,有必要对inviteIds的获取进行懒加载
fwhezfwhez 2018-05-23
  • 打赏
  • 举报
回复
首先人物结构是 { id string inviteIds []string }
幻成魔 2016-09-10
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
好的数据结构可以达到事半功倍的效果 按你的业务描述,大量的业务只是在做级联查询 因此,如果采用你现在的 邻接列表算法 的数据结构,那么每次查询都需要递归,越靠底层,递归越深 建议采用 预排序(又称 前序遍历、左右值)算法 的数据结构,只需一次查询就可获取全部下级
有一个问题请教一下。如果用预排序遍历树算法,如何获取到任意子节点的祖先。是祖先节点。麻烦告知一下
幻成魔 2016-09-10
  • 打赏
  • 举报
回复
有一个问题请教一下。如果用预排序遍历树算法,如何获取到任意子节点的祖先。是祖先节点。麻烦告知一下
宁不邪 2016-09-06
  • 打赏
  • 举报
回复

function createTree(array $data, $inviteid=1, $deep=0){
    static $tree=array();
    foreach ($data as $row){
        if($row['inviteid']==$inviteid){
            $row['deep']=$deep;
            $tree[]=$row;
            $this->createTree($data,$row['id'],$deep+1);
        }
    }
    return $tree;
}
这就是无限分类的问题
xuzuning 2016-09-04
  • 打赏
  • 举报
回复
好的数据结构可以达到事半功倍的效果 按你的业务描述,大量的业务只是在做级联查询 因此,如果采用你现在的 邻接列表算法 的数据结构,那么每次查询都需要递归,越靠底层,递归越深 建议采用 预排序(又称 前序遍历、左右值)算法 的数据结构,只需一次查询就可获取全部下级
幻成魔 2016-09-04
  • 打赏
  • 举报
回复
引用 3 楼 misakaqunianxiatian 的回复:
需求描述得看不懂。。。
这个需求就是微商的后台管理需求。比如我的ID是2 我可以邀请一个人,我也可以邀请十个 一百个人。那么我邀请的人,inviteid都是等于我的ID,那么比如我邀请的一百个人,他们继续邀请,然后继续就像树状图一样排下去。我的图片只是写了个一个邀请一个 然后邀请的一个再邀请.....
幻成魔 2016-09-04
  • 打赏
  • 举报
回复
引用 2 楼 A9925 的回复:
需求不清楚……… ~
我意思是 那张图我只知道一个东西 那就是ID等于2.我想用我知道的这个ID等于2,来求出下面的所有的数据,下面我只是写到ID等于9 可以是ID一直排到100可以是一直排到100000000. 而我只知道ID等于2,我要求出来下面的数据 求出来下面的数据-------------------------------------------------------------------------------------------------------------------我用for循环做不出来 为什么要用循环呢,因为ID2 可以邀请多个人。这个是类似于树状图,我可以邀请一个,也可以邀请无数个,我邀请的无数个也可以邀请。一级一级排下去。懂?
misaka去年夏天 2016-09-04
  • 打赏
  • 举报
回复
#5楼的写法可以查到,但是按照#9楼说的,改变一下数据表结构,其实可以更高效地完成查询(不需要递归),参考预排序遍历算法http://my.oschina.net/XYleung/blog/99604
Dleno 2016-09-02
  • 打赏
  • 举报
回复
楼上的可以查。 也可以改下数据结构,就能够一条语句就查出来了。。 2 1 3 1,2 4 1,2,3 5 1,2,3,4 6 1,2,3,4,5 ........ 这样的格式,可以用FIND_IN_SET一条语句查出来。。
一起混吧 2016-09-01
  • 打赏
  • 举报
回复
function foo($inviteid){
	$result = mysql_query("select id from table where inviteid=$inviteid");
	$row = mysql_fetch_row($result);
	if($row){
		echo $row[0]. ',';
		foo($row[0]);
	}
}
foo(2);
li9396884 2016-09-01
  • 打赏
  • 举报
回复
function get_member_us($member_id,$obj,$leave=1){ static $tree = array(); if($member_id){ $member_user=$obj->where(array('reg_key'=>$member_id))->field('uid,nick_name,mobile,reg_key,time')->select(); foreach($member_user as $member_user_k=>$member_user_v){ $member_user_v['leave']=$leave; $tree[]=$member_user_v; $this->get_member_us($member_user_v['uid'],$obj,$leave+1); } } return $tree; }
misaka去年夏天 2016-09-01
  • 打赏
  • 举报
回复
需求描述得看不懂。。。
  • 打赏
  • 举报
回复
需求不清楚……… ~
Binver2016 2016-08-31
  • 打赏
  • 举报
回复
<?php header("content-type:text/html;charset=UTF-8"); function test($i){ if($i==2){ return 1; }else{ return test($i-1)+1; } } echo "人数id7对应的值为:".test(7); ?>

21,886

社区成员

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

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