从数组中打印表格格式的树
问题描述:
您好我正在尝试打印一个数组,其中包含节点值和深度参数,如下表所示。从数组中打印表格格式的树
我当前的代码,它将打印如下树视图格式:
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]
所以逻辑的每一行该表将被共享同盟深度节点值。
答
首先创建由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]
因此不'我写代码为我requirements'要求的服务,你应该已经知道现在。显示您当前的代码 –
我目前的代码打印为树形视图,但我甚至没有任何想法,无论如何,我将添加我当前的代码。 –
我建议你阅读** [如何提出完美的问题](https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)**,下一步** [如何创建最小,完整和可验证的例子](https://stackoverflow.com/help/mcve)** - 然后编辑您的问题,以潜在吸引更多的关注。 –