我有一大堆的名字 - parentname对,我想转成少数heirarchical树形结构成为可能.例如,这些可能是配对:
Child : Parent
H : G
F : G
G : D
E : D
A : E
B : C
C : E
D : NULL
Run Code Online (Sandbox Code Playgroud)
需要转化为(a)层次结构树:
D
??? E
? ??? A
? ? ??? B
? ??? C
??? G
??? F
??? H
Run Code Online (Sandbox Code Playgroud)
我想要的最终结果是一组嵌套的<ul>元素,每个元素都<li>包含孩子的名字.
有在配对没有不一致(孩子是它自己的父母,父母是孩子的孩子,等等),所以一堆优化大概可以做.
在PHP中,我如何从包含child => parent对的数组转到一组嵌套<ul>s?
我有一种感觉,涉及到递归,但我还没有完全清醒地思考它.
我环顾互联网,并没有找到我正在寻找的东西.我有一个扁平数组,每个元素都包含'id'和'parent_id'.每个元素只有一个父元素,但可能有多个子元素.如果parent_id = 0,则将其视为根级别项.我想把我的扁平阵列变成一棵树.我发现的其他样本只将元素复制到父元素,但原始元素仍然存在.
编辑
从单独的XML文件中读取起始数组的每个元素.如果父文件没有父文件,则文件本身将具有'0'作为parent_id的值.键实际上是字符串.
我很抱歉早先的混乱.希望这更清楚:
/编辑
我的起始阵列:
Array
(
[_319_] => Array
(
[id] => 0
[parent_id] => 0
)
[_320_] => Array
(
[id] => _320_
[parent_id] => 0
)
[_321_] => Array
(
[id] => _321_
[parent_id] => _320_
)
[_322_] => Array
(
[id] => _322_
[parent_id] => _321_
)
[_323_] => Array
(
[id] => _323_
[parent_id] => 0
)
[_324_] => Array
(
[id] => _324_
[parent_id] => _323_
)
[_325_] => Array
( … 我正在使用PHP,我需要一个看似简单的数组任务的帮助.
这是我的示例数组:
$arr = array(
0 => NULL,
1 => NULL,
2 => NULL,
3 => NULL,
8 => '2',
9 => '2',
10 => '2',
11 => '2',
12 => '3',
13 => '3',
14 => '8',
15 => '8',
16 => '14',
17 => '14',
18 => '14'
);
Run Code Online (Sandbox Code Playgroud)
数组的键表示ID(唯一).
值是parentID,即父"节点"的ID.NULL表示没有parentID(即新数组的第一维).
现在,我需要创建一个新的多维数组,其父元素下包含所有子元素.(这可能听起来很混乱,抱歉我缺乏描述性能力.下面有一个例子,应该让事情更清楚)
以下是我的示例的新数组在"排序"函数或者您调用此函数之后的应用:
$arr = array(
0 => array(),
1 => array(),
2 => array(
8 => array(
14 => array(
16 …