древовидная структура пользователей с уровнем детализации

я пытаюсь создать древовидную структуру пользователей, у каждого пользователя будет по 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

Решение

Вы можете достичь своей цели, выполнив следующие шаги


1) Взять хотя бы один глобальный массив $Leveldata = array()

2) Каждый раз, когда вы вызываете функцию имеет дочерний элемент, если вы нашли дочерний элемент, вставьте эти данные в массив.

3) Как только вы получите свой счетчик с номером уровня, который вы хотите, скажем, 3,
разорвать петлю


надеюсь, что это предложение поможет вам, и вы можете продолжать дальше

Спасибо

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector