将父子关系转换为层次树
在编程中,可能需要将一系列的父子关系转换为层次树层次树结构。此任务可以使用递归方法在 PHP 中完成。
示例数据:
考虑以下一组父子关系:
Child : Parent H : G F : G G : D E : D A : E B : C C : E D : NULL
转变为层次结构树:
为了将此数据转换为分层树结构,我们创建两个 PHP 函数:
parseTree 函数:
function parseTree($tree, $root = null) { $return = array(); foreach($tree as $child => $parent) { if($parent == $root) { unset($tree[$child]); $return[] = array( 'name' => $child, 'children' => parseTree($tree, $child) ); } } return empty($return) ? null : $return; }
printTree函数:
function printTree($tree) { if(!is_null($tree) && count($tree) > 0) { echo '<ul>'; foreach($tree as $node) { echo '<li>' . $node['name']; printTree($node['children']); echo '</li>'; } echo '</ul>'; } }
用法:
要使用这些函数,首先初始化子父对数组。然后使用数组调用 parseTree 并使用生成的树调用 printTree:
$tree = array( 'H' => 'G', 'F' => 'G', 'G' => 'D', 'E' => 'D', 'A' => 'E', 'B' => 'C', 'C' => 'E', 'D' => null ); $result = parseTree($tree); printTree($result);
结果:
输出将是表示层次树的无序列表:
<ul> <li>D <ul> <li>G <ul> <li>H</li> <li>F</li> </ul> </li> <li>E <ul> <li>A</li> <li>C <ul> <li>B</li> </ul> </li> </ul> </li> </ul> </li> </ul>
以上是如何在PHP中将父子关系转换为层次树?的详细内容。更多信息请关注PHP中文网其他相关文章!