从数组中打印表格格式的树

问题描述:

您好我正在尝试打印一个数组,其中包含节点值和深度参数,如下表所示。从数组中打印表格格式的树

我当前的代码,它将打印如下树视图格式:

if(count($nodes) > 0){ 
    $depth = -1; 
    $flag = false; 
    foreach ($nodes as $row) { 
     while ($row->depth > $depth) { 
      echo "<ul><li><a href='javascript:void(0);'>"; 
      $flag = false; 
      $depth++; 
     } 
     while ($row->depth < $depth) { 
      echo "</a></li></ul>"; 
      $depth--; 
     } 
     if ($flag) { 
      echo "</a></li><li><a href='javascript:void(0);'>"; 
      $flag = false; 
     } 
     echo $row->name.'<button type="button" class="btn btn-danger margin-left-20 removeBtn" data-name="'.$row->name.'">Delete</button>' ; 
     $flag = true; 
    } 
    while ($depth-- > -1) { 
     echo "</a></li></ul>"; 
    } 
}else{ 
    echo '<div class="alert alert-warning"><strong>Warning!</strong> There were no nodes in the tree!</div>'; 
} 

示例阵列:

Value Depth 

12  0 

13  1 

14  1 

25  2 

20  2 

21  2 

16  2 

23  3 

24  3 

我能在一个正常的树视图打印,但是当我试图作为表格格式打印,我无法以某种方式进行打印。

预期格式:

表第一行12 [0]的整个行

表第二行将由13共享[1]和14 [1]

表第三行将被共享由25 [2],20 [2]和21 [] 2

表第四行将由共享16 [3],23 [3]和24 [3]

所以逻辑的每一行该表将被共享同盟深度节点值。

+0

因此不'我写代码为我requirements'要求的服务,你应该已经知道现在。显示您当前的代码 –

+0

我目前的代码打印为树形视图,但我甚至没有任何想法,无论如何,我将添加我当前的代码。 –

+0

我建议你阅读** [如何提出完美的问题](https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)**,下一步** [如何创建最小,完整和可验证的例子](https://*.com/help/mcve)** - 然后编辑您的问题,以潜在吸引更多的关注。 –

首先创建由depth作为关键的唯一数组。

$temp_nodes = []; 

if (count($nodes) > 0) { 
    foreach ($nodes as $key => $row) { 
     $temp_nodes[$row->depth][] = $row; 
    } 
} 

上面的代码将与独特的深度为重点&数组下的所有相同的深度记录阵列。然后遍历数组&显示:

foreach ($temp_nodes as $key => $temp_node) { 
    foreach ($temp_node as $node) { 
     echo "$node->value [$key]"; 
    } 
    echo "<br>"; 
} 

输出:

12 [0] 
13 [1]14 [1] 
25 [2]20 [2]21 [2]16 [2] 
23 [3]24 [3]