从数组列表构建树结构
给定一个具有层次关系的项目数组列表,我们如何有效地将其转换为嵌套树结构?
解决方案:
为了在不使用复杂的数据库优化的情况下实现这种转换,我们可以使用递归函数:
$arr = array( array('id' => 100, 'parentid' => 0, 'name' => 'a'), array('id' => 101, 'parentid' => 100, 'name' => 'a'), array('id' => 102, 'parentid' => 101, 'name' => 'a'), array('id' => 103, 'parentid' => 101, 'name' => 'a'), ); $new = array(); foreach ($arr as $a) { $new[$a['parentid']][] = $a; } $tree = createTree($new, array($arr[0])); print_r($tree); function createTree(&$list, $parent){ $tree = array(); foreach ($parent as $k => $l){ if(isset($list[$l['id']])){ $l['children'] = createTree($list, $list[$l['id']]); } $tree[] = $l; } return $tree; }
这段代码将项目排列成嵌套的层次结构,表示它们之间的父子关系。可以使用 print_r 打印生成的树结构。
通过利用递归函数,我们可以有效地将数组列表转换为树结构,从而轻松导航和组织数据。
以上是如何从分层数组列表高效构建树结构?的详细内容。更多信息请关注PHP中文网其他相关文章!