入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2016-08-01 投稿人: 浏览次数:4591

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


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

代码如下:

<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里的一个函数;


运行后效果如下:


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

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

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

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。