如何高效地将记录数组转换为树结构
在这种情况下,您有一个表示层次结构的记录数组。每条记录都有一个 ID、父 ID 和名称。目标是将此数组转换为嵌套树结构,其中根节点有子节点,而子节点又可能有自己的子节点。
为了实现此目的,使用了一个名为 createTree 的递归函数。该函数采用两个参数:对记录数组的引用和父数组。它迭代父数组,并针对每个父数组检查记录数组中是否有任何子记录。如果存在子记录,则递归调用createTree函数处理它们,并将结果赋值给父记录的children属性。
以下是一个示例:
$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; }
此代码将输出所需的树结构。 createTree 函数递归地将父记录转换为子记录,创建数据的分层树表示。请注意,该函数对输入数组的引用进行操作,允许将更改传播回原始数组。
以上是如何高效地将记录数组转换为嵌套树结构?的详细内容。更多信息请关注PHP中文网其他相关文章!