将项目的PHP数组转换为分层数组的方法是通过递归实现的。下面是一个示例代码:
function buildTree(array $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;
}
// 示例数据
$projects = array(
array('id' => 1, 'name' => '项目1', 'parent_id' => 0),
array('id' => 2, 'name' => '项目2', 'parent_id' => 0),
array('id' => 3, 'name' => '子项目1', 'parent_id' => 1),
array('id' => 4, 'name' => '子项目2', 'parent_id' => 1),
array('id' => 5, 'name' => '子项目3', 'parent_id' => 2),
array('id' => 6, 'name' => '子项目4', 'parent_id' => 2),
array('id' => 7, 'name' => '子子项目1', 'parent_id' => 3),
array('id' => 8, 'name' => '子子项目2', 'parent_id' => 3),
);
$tree = buildTree($projects);
print_r($tree);
上述代码中,buildTree
函数接受一个包含项目信息的数组和一个父ID作为参数。它首先创建一个空数组$tree
用于存储分层数组。然后遍历项目数组,如果某个项目的父ID与给定的父ID相等,则将该项目添加到$tree
数组中。同时,递归调用buildTree
函数来构建该项目的子项目数组,并将其赋值给$item['children']
。最后,返回构建好的分层数组。
对于上述示例数据,输出结果如下:
Array
(
[0] => Array
(
[id] => 1
[name] => 项目1
[parent_id] => 0
[children] => Array
(
[0] => Array
(
[id] => 3
[name] => 子项目1
[parent_id] => 1
[children] => Array
(
[0] => Array
(
[id] => 7
[name] => 子子项目1
[parent_id] => 3
)
[1] => Array
(
[id] => 8
[name] => 子子项目2
[parent_id] => 3
)
)
)
[1] => Array
(
[id] => 4
[name] => 子项目2
[parent_id] => 1
)
)
)
[1] => Array
(
[id] => 2
[name] => 项目2
[parent_id] => 0
[children] => Array
(
[0] => Array
(
[id] => 5
[name] => 子项目3
[parent_id] => 2
)
[1] => Array
(
[id] => 6
[name] => 子项目4
[parent_id] => 2
)
)
)
)
这样,我们成功将具有父ID的项目PHP数组转换为了分层数组。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云