用户树状视图结构与级别的详细信息


users treeview structure with level details

我试图创建用户的树形视图结构,每个用户将有2个子节点,我的代码创建树形视图完美,但我坚持获得级别信息。

 public function treeView() {
        $this->load->view('header');
        $leftArray=array('viewMode'=>'admin',"isLogin"=>$this->session->userdata('isUserLogin'));
        $this->load->view('left',$leftArray);
        $alias="*";
        $table="user";
        $where=array("userId"=>$this->session->userdata('userId'));
        $userDetails= $this->commonmodel->getData($alias,$table,$where);
        $this->getTreeArray($userDetails[0]->userId,  $this->stageCounter);
        $treeArray = json_encode($this->globTreeArray);
        //echo $this->stageCounter;exit;
        //echo "<pre>";
        //print_r($this->globTreeArray);
        //exit;
        $treeviewArray=array("treeArray"=>$treeArray,"userDetails"=>$userDetails[0]);
        $this->load->view('treeView',$treeviewArray);
        $this->load->view('footer');
    }     
public function getTreeArray($userId,$level) {
        $childArray=array();
        $alias="*";
        $table="user_relationship";
        $where=array("placementUserId"=>$userId);
        $childRecords= $this->commonmodel->getData($alias,$table,$where);
        foreach ($childRecords as $child){
            $temp=array();
            if($child->placementSide=='left'){
                $childUserDetails=$this->getUserDetails($child->childUserId);
                $temp[]="<div><img src='".  base_url()."assets/img/default-avatar.png' width='80'/></div>".$childUserDetails->registrationCode."</br>".$childUserDetails->fullName;
                $placementUserDetails=$this->getUserDetails($child->placementUserId);
                $temp[]="<div><img src='".  base_url()."assets/img/default-avatar.png' width='80'/></div>".$placementUserDetails->registrationCode."</br>".$placementUserDetails->fullName;
                $temp[]=(string)$this->stageCounter;
                $childArray[0]=$temp;
                $this->globTreeArray[]=$temp;
            }
            if($child->placementSide=='right'){
                $childUserDetails=$this->getUserDetails($child->childUserId);
                $temp[]="<div><img src='".  base_url()."assets/img/default-avatar.png' width='80'/></div>".$childUserDetails->registrationCode."</br>".$childUserDetails->fullName;
                $placementUserDetails=$this->getUserDetails($child->placementUserId);
                $temp[]="<div><img src='".  base_url()."assets/img/default-avatar.png' width='80'/></div>".$placementUserDetails->registrationCode."</br>".$placementUserDetails->fullName;
                $temp[]=(string)$this->stageCounter;
                $childArray[1]=$temp;
                $this->globTreeArray[]=$temp;
            }
            //if($level<=2)
            //{
                    //echo $level."------".$childUserDetails->registrationCode."----------".$placementUserDetails->registrationCode."<br>";
                    if($this->hasChildren($childUserDetails->userId)==TRUE)
                    {
                        $this->stageCounter++;
                        $this->getTreeArray($childUserDetails->userId,$this->stageCounter);
                    }
                    else
                    {
                        $this->stageCounter--;
                    }
            //}
        }
        //echo "<pre>";
        //print_r($this->globTreeArray);
        //exit;
        return json_encode($this->globTreeArray);
    }

如我的代码所示,我需要三个元素在0位置子,1位置父和2位置级别号,

你可以按照以下步骤实现你的目标:

  1. 取一个全局数组,例如$Leveldata = array()

  2. 每次调用函数都有child,如果找到child,则将该数据推入数组。

  3. 一旦你得到了你想要的级别数,比如3,打破你的循环