要将 PHP 数组转换为树状结构,可以使用递归的方式来实现。下面是一个示例代码:
function buildTree($array, $parentId = 0) {
$tree = array();
foreach ($array as $item) {
if ($item['parent_id'] == $parentId) {
$children = buildTree($array, $item['id']);
if ($children) {
$item['children'] = $children;
}
$tree[] = $item;
}
}
return $tree;
}
// 示例数据
$array = array(
array('id' => 1, 'name' => 'Node 1', 'parent_id' => 0),
array('id' => 2, 'name' => 'Node 1.1', 'parent_id' => 1),
array('id' => 3, 'name' => 'Node 1.2', 'parent_id' => 1),
array('id' => 4, 'name' => 'Node 1.2.1', 'parent_id' => 3),
array('id' => 5, 'name' => 'Node 2', 'parent_id' => 0),
array('id' => 6, 'name' => 'Node 2.1', 'parent_id' => 5),
array('id' => 7, 'name' => 'Node 2.2', 'parent_id' => 5),
);
$tree = buildTree($array);
print_r($tree);
上述代码中的 buildTree
函数接受一个数组和一个父节点 ID,然后遍历数组中的每个元素,如果元素的 parent_id
等于当前父节点 ID,则将该元素添加到树中,并递归调用 buildTree
函数来构建子树。最后返回构建好的树。
示例数据中的数组表示了一个树状结构,输出结果如下:
Array
(
[0] => Array
(
[id] => 1
[name] => Node 1
[parent_id] => 0
[children] => Array
(
[0] => Array
(
[id] => 2
[name] => Node 1.1
[parent_id] => 1
)
[1] => Array
(
[id] => 3
[name] => Node 1.2
[parent_id] => 1
[children] => Array
(
[0] => Array
(
[id] => 4
[name] => Node 1.2.1
[parent_id] => 3
)
)
)
)
)
[1] => Array
(
[id] => 5
[name] => Node 2
[parent_id] => 0
[children] => Array
(
[0] => Array
(
[id] => 6
[name] => Node 2.1
[parent_id] => 5
)
[1] => Array
(
[id] => 7
[name] => Node 2.2
[parent_id] => 5
)
)
)
)
输出结果中的每个节点都包含一个 children
属性,表示该节点的子节点。
上一篇:php如何求出两个数组的和
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站