2017-11-09 9 views
-2

以下のような配列があります。これは動的で、$ main_arrは私が親のオプションのようなツリー構造を持つ配列を準備する必要がありますPHPを使用して動的にツリーベースの配列を準備する方法

$main_arr['Day'] = array('Day 1', 'Day 2'); 
$main_arr['Hall'] = array('Hall 1', 'Hall 2'); 
$main_arr['Session'] = array('Session 1', 'Session 2'); 

編集可能な追加/削除するオプションを/持っていることがあります。

{"key":2, "name":"Day 1", "title":"Day 1", "parent":1}, 
{"key":3, "name":"Hall 1", "title":"Day 1", "parent":2}, 
{"key":4, "name":"Session 1", "title":"Day 1 | Hall: 1", "parent":3}, 
{"key":5, "name":"Session 2", "title":"Day 1 | Hall: 1", "parent":3}, 
{"key":6, "name":"Hall 2", "title":"Day 1", "parent":2}, 
{"key":7, "name":"Session 1", "title":"Day 1 | Hall: 2", "parent":6}, 
{"key":8, "name":"Session 2", "title":"Day 1 | Hall: 2", "parent":6}, 
{"key":9, "name":"Day 2", "title":"Day 2", "parent":1}, 
{"key":10, "name":"Hall 1", "title":"Day 2", "parent":9}, 
{"key":11, "name":"Session 1", "title":"Day 2 | Hall: 1", "parent":10}, 
{"key":12, "name":"Session 2", "title":"Day 2 | Hall: 1", "parent":10}, 
{"key":13, "name":"Hall 2", "title":"Day 2", "parent":9}, 
{"key":14, "name":"Session 1", "title":"Day 2 | Hall: 2", "parent":13}, 
{"key":15, "name":"Session 2", "title":"Day 2 | Hall: 2", "parent":13} 

私のPHPコード(そのコメントからコピー):

<?php 

$day = 2; 
$hall = 2; 
$session = 2; 
$id = 1; 
$main_parent = 1; 

for ($i = 1; $i <= $day; $i++) { 

    $id++; 
    insert($id, $main_parent, "Day $i"); 
    $parent_day = $id; 
    for ($j = 1; $j <= $hall; $j++) { 
     $id++; 
     insert($id, $parent_day, 
      "Hall $j"); 
     $parent_hall = $id; 
     for ($k = 1; $k <= $session; $k++) { 
      $id++; 
      insert($id, $parent_hall, 
       "Session $k"); 
     } 
    } 
} 

?> 
+0

あなたは何を試しましたか? puのいくつかのコード... – DRPK

+0

こんにちは、ロジックは、plsチェック、ありがとう – Udhay

答えて

0

動的配列入力に基づいてPrepare Dynamicツリーの論理を自分で作成します。

$main_arr[] = array('Day 1', 'Day 2'); 
//$main_arr[] = array('Location 1', 'Location 2'); 
$main_arr[] = array('Hall 1', 'Hall 2'); 
//$main_arr[] = array('Sub Hall 1', 'Sub Hall 2'); 
$main_arr[] = array('Session 1', 'Session 2'); 
//$main_arr[] = array('Sub Session 1', 'Sub Session 2'); 

$main_count = count($main_arr); 

$arr = array(); 
$last_arr = array(); 
$id = $parent = 1; 

for($i = 0; $i < $main_count; $i++) { 
    $cur_arr = $main_arr[$i]; 

    $next_arr = array(); 
    if($main_arr[$i+1]) { 
     $next_arr = $main_arr[$i+1]; 
    } 

$parent = $id; 
if($i == 0) { 
    foreach($cur_arr as $cur_key => $cur_label) { 
     $id++; 
     $arr[$id]['title'] = $cur_label; 
     $arr[$id]['parent'] = $parent; 

     $last_arr[$id] = $title = "$cur_label"; 
     insert($id, $parent, $title, $subtitle); 
    } 
} 

foreach($last_arr as $last_key => $last_label) { 
    foreach($next_arr as $next_key => $next_label) { 
     $id++; 
     $arr[$id]['title'] = "$last_label - $next_label"; 
     $arr[$id]['parent'] = $last_key; 
     insert($id, $last_key, $next_label, $last_label); 

     $next_last_arr[$id] = "$last_label - $next_label"; 
    } 
} 
$last_arr = $next_last_arr; 
unset($next_last_arr); 
} 

function insert($id, $parent, $title, $subtitle) { 
     echo '{"key":'.$id.', "name":"'.$title.'", "title":"'.$subtitle.'", "parent":'.$parent.'},<br/>'; 
} 

?>あなたのサポートのための

感謝。参照用にアップロードされた画像。

リンク:https://i.stack.imgur.com/0ECGp.png

0

が、これはあなたが探しているものですか?

<?php 

$day = 2; 
$hall = 2; 
$session = 2; 
$id = 1; 
$main_parent = 1; 

$main_array = array(); 

for ($i = 1; $i <= $day; $i++) { 

    $id++; 
    $main_array[] = array("key"=>$id, "name"=>"Day " . $i, "title"=>"Day " . $i, "parent"=>1); 
    $parent_day = $id; 

    for ($j = 1; $j <= $hall; $j++) { 
     $id++; 
     $main_array[] = array("key"=>$id, "name"=>"Hall " . $j, "title"=>"Day " . $i, "parent"=>$parent_day); 
     $parent_hall = $id; 
     for ($k = 1; $k <= $session; $k++) { 
      $id++; 
      $main_array[] = array("key"=>$id, "name"=>"Session " . $k, "title"=>"Day " . $i . " | Hall: " . $j, "parent"=>$parent_hall); 
     } 
    } 
} 
+0

おかげで、あなたは$ main_arrの値に基づいて言及したように、配列を形成するためのログインが必要、これは/削除/編集可能なオプションがあります。このツリー構造の配列を準備するロジックが必要 – Udhay

+0

私はあなたが何をする必要があるのか​​分かりません。ログインとは何ですか?入力データとは何ですか?どこに行く必要がありますか?おそらくあなたはいくつかのコードを投稿することができますか? –

+0

私のコードが追加されました、plsチェック – Udhay

関連する問題