2016-04-13 15 views
0

Kısa bir süre önce json verilerini görüntülemek için JSTREE kullanmaya başladım (bunu örnek kodumda bir dizi olarak gösteriyorum). Ancak, bazı düğümler tekrarlanıyor. Düğümün zaten bir çocuk düğümü olup olmadığını kontrol etmek için bir If döngüsü eklemeyi düşünüyordum ama nasıl yapacağımı bilmiyorum. Ayrıca benim kodumun da birçok döngüden dolayı iyi performans göstermediğini düşünüyorum. Ben bir PHP acemi değilim bu yüzden bir dizi üzerinden tekrarlamak için daha hızlı bir yol olabilir eğer emin değilim. İşte benim kodum.JSTree yinelenen düğümleri gösteriyor

$relation = array(

     "parent"=>array("item"=>array("cs","ls")), 

     "cs"=>array("item"=>array("cs_1")), 

     "ls"=>array("item"=>array("ls_1")), 

     "cs_1"=>array("item"=>array("cs_1_1")) 

     ); 

    $tree = array(); 

    $i=0; 

    foreach($relation as $key_parent=>$value_parent) { 

     #$children = array_keys($value_parent); 

     $tree[$i++] = array('id'=>$key_parent,'text'=>$key_parent,'state'=>array('opened'=>true),'parent'=>'#');  

     foreach($value_parent['item'] as $key_child_1=>$value_child_1) { 

      $tree[$i++]= array('id'=>$value_child_1,'text'=>$value_child_1,'state'=>array('opened'=>true),'parent'=>$key_parent); 

     } 

    } 

enter image description here

cevap

0

Girişiniz yapısı uzak- tır, ama yine de çalışabilir.

$relation = array(
    "parent"=>array("item"=>array("cs","ls")), 
    "cs"=>array("item"=>array("cs_1")), 
    "ls"=>array("item"=>array("ls_1")), 
    "cs_1"=>array("item"=>array("cs_1_1")) 
); 

$tree = array(); 

foreach($relation as $key_parent=>$value_parent) { 
    $tree[$key_parent] = array('id'=>$key_parent,'text'=>$key_parent,'state'=>array('opened'=>true),'parent'=>'#');  
    foreach($value_parent['item'] as $key_child_1=>$value_child_1) { 
     $tree[$value_child_1]= array('id'=>$value_child_1,'text'=>$value_child_1,'state'=>array('opened'=>true),'parent'=>$key_parent); 
    } 
} 

$tree = array_values($tree); 

sadece düzeltme $tree dizide anahtar olarak gerçek düğüm kimliği kullanarak ve sonra geri dönüştürmek için array_values çağırıyor: Eğer doğru anladıysam, bu ne ihtiyaç vardır.

İlgili konular