具有级别详细信息的用户树视图结构

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, 打破循环


希望这个建议对你有帮助,你可以继续

谢谢