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

kgqe7b3p  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(110)

我试图创建用户的树状视图结构,每个用户将有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位置child,1位置parent和2位置levelnumber,

drnojrws

drnojrws1#

您可以通过以下步骤实现您的目标:
1.取一个全局数组,比如$Leveldata = array()
1.每次调用函数has child时,如果找到了child,则将该数据推入数组。
1.一旦你得到了你想要的计数器的级别数,比如说3,就中断你的循环。

相关问题