php【递归循环出树形结构】的一个用户下面的所有人信息之【两种方法的对比】
注:这两种方法都是这张图
一:取出这个人下面的所有人,把他们存放在一个一维索引数组里。这个在上一篇博客有仔细说明,这里再说明一下:
代码如下:
<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。