php数组怎么转为树型数组
原创PHP数组转为树型数组的方法
在PHP开发中,我们常常会遇到需要将一维数组转换成树型数组的需求。本文将介绍怎样将普通的PHP数组转换成树型数组。
一、普通数组结构
首先,我们来看一个普通的PHP数组结构,通常包含ID、父ID和名称等信息。
$array = [
['id' => 1, 'parent_id' => 0, 'name' => 'A'],
['id' => 2, 'parent_id' => 0, 'name' => 'B'],
['id' => 3, 'parent_id' => 1, 'name' => 'A-1'],
['id' => 4, 'parent_id' => 1, 'name' => 'A-2'],
['id' => 5, 'parent_id' => 2, 'name' => 'B-1'],
['id' => 6, 'parent_id' => 3, 'name' => 'A-1-1']
];
二、转换方法
接下来,我们使用递归函数来实现数组的转换。递归函数会通过父ID找到对应的子元素,然后将其组合成树型结构。
function buildTree(array $elements, $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element['parent_id'] == $parentId) {
$children = buildTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[] = $element;
}
}
return $branch;
}
$tree = buildTree($array);
三、转换后的树型数组
通过上面的递归函数,我们得到了以下树型数组结构:
$tree = [
[
'id' => 1,
'parent_id' => 0,
'name' => 'A',
'children' => [
[
'id' => 3,
'parent_id' => 1,
'name' => 'A-1',
'children' => [
[
'id' => 6,
'parent_id' => 3,
'name' => 'A-1-1'
]
]
],
[
'id' => 4,
'parent_id' => 1,
'name' => 'A-2'
]
]
],
[
'id' => 2,
'parent_id' => 0,
'name' => 'B',
'children' => [
[
'id' => 5,
'parent_id' => 2,
'name' => 'B-1'
]
]
]
];
四、结语
通过本文的介绍,我们了解了怎样将普通的PHP数组转换成树型数组。愿望这个方法能对您的开发工作有所帮助。