php【递归循环出树形结构】的一个用户下面的所有人信息之【两种方法的对比】

80 篇文章 0 订阅
2 篇文章 0 订阅

注:这两种方法都是这张图


一:取出这个人下面的所有人,把他们存放在一个一维索引数组里。这个在上一篇博客有仔细说明,这里再说明一下:

代码如下:

<span style="font-size:18px;">public function userlist(){
        $name="a3@qq.com";//找到这个人下面的所有人
        $arr=$this->test2($name);
        show_bug($arr);
        echo count($arr);
        $this->display();
    }
    //递归函数
    public function test2($name,$result=array()){
        global $result;
        $list=M()->table('ot_user')->where(array('UE_accName'=>$name))->select();
        //show_bug($list);die;
        if (!empty($list)) {
            foreach($list as $key=>$val){
                $result[]=$val['ue_account'];
                $this->test2($val['ue_account'],$result);
            }
        }
        return $result;
    }</span>
代码截图如下:


这个函数运行出来的效果如下:


二:取出这个人下面的所有人,把他们存放在一个二维关联数组里:

代码如下:

<span style="font-size:18px;"> public function _initialize(){
    	header('content-type:text/html;charset=utf-8');

		//团队总数
		$name='a3@qq.com';
		$arr=$this->tuanduiNum($name);
		show_bug($arr);
		echo $num=count($arr);
		$this->assign("duanduiNum",$num);
	}
	
	//获取所有总数
	public function tuanduiNum($name){
		//$base = $this->getTreeBaseInfo ( $_SESSION ['uname'] );
		$base = $this->getTreeBaseInfo ($name);

		//$znote = $this->getTreeInfo ( $_SESSION ['uname'] );
		$znote = $this->getTreeInfo ($name);
		$znote [] = $base;

		return $znote;
	}

	//此方法用于ajax返回
    /*public function getTree() {
		$base = $this->getTreeBaseInfo ( $_SESSION ['uname'] );

		$znote = $this->getTreeInfo ( $_SESSION ['uname'] );
		$znote [] = $base;
	
		//print_r($znote);die;
		echo json_encode ( array ("status" => 0,"data" => $znote ) );

	}*/

    public function getTreeBaseInfo($id) {

		if (!$id) return;
		//$r = M("user")->where(array('UE_account' =>$id))->find ();
		$r = M()->table('ot_user')->where(array('UE_account' =>$id))->find ();
		if ($r)
			return array (
					"id" => $r ['ue_account'],
					"pId" => $r ['ue_accname'],
					"name" => $r ['ue_account'] . "[" .sfjhff($r['ue_check']).",". $r ['ue_truename'] . "," . $r ['ue_activetime'] . "]" 
			);
		return;
	}

	public function getTreeInfo($id) {		
		static $trees = array ();
		$ids = self::get_childs ( $id );
		if (! $ids){
			return $trees;
		}
		$_SESSION['user_jb']++;
		foreach ( $ids as $v ) {
			$trees [] = $this->getTreeBaseInfo ( $v );

			$this->getTreeInfo ( $v );
		}
		return $trees;
	}

	public static function get_childs($id) {
		if(!$id)
			return null;
		$childs_id = array ();

		//$childs = M("user")->field ("UE_account")->where(array('UE_accName'=>$id))->select();
		$childs = M()->table('ot_user')->field ("UE_account")->where(array('UE_accName'=>$id))->select();
		foreach ( $childs as $v ) {
			$childs_id [] = $v ['ue_account'];
		}

		if ($childs_id)
			return $childs_id;
		return 0;
	}</span>

还有一个写在function.php里的函数

<span style="font-size:18px;">function sfjhff($r)
{
    $a = array("未激活", "已激活");
    return $a[$r];
}</span>

代码截图如下:




还有function.php里的一个函数;


运行后效果如下:


这就是他们之间的不同,第一个只是把这个人下面的所有人取出来放在一个一维索引数组里。

第二个则是把这个人下面所有人的详细信息取出来,放在一个二维关联数组里。根据不同需要采纳。

还有就是,第一个取出的不包含自己,第二个是包括自己的。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值