Php 如何将一系列父子关系转换为一个序列数组?
我在数组中有一堆父子id,如下所示Php 如何将一系列父子关系转换为一个序列数组?,php,recursion,Php,Recursion,我在数组中有一堆父子id,如下所示 child => parent Array ( [1] => 0 ===>parent [2] => 1 [4] => 1 [5] => 4 [6] => 2 [7] => 0 ===>parent [8] => 2 [9] => 7 [10] => 2 [11] => 2 [12] => 2 [17] =>
child => parent
Array
(
[1] => 0 ===>parent
[2] => 1
[4] => 1
[5] => 4
[6] => 2
[7] => 0 ===>parent
[8] => 2
[9] => 7
[10] => 2
[11] => 2
[12] => 2
[17] => 12
[18] => 17
[19] => 0 ===>parent
[20] => 19
[21] => 20
[22] => 20
[23] => 20
)
我的解析树是
0->parent
____________|___________________________
| | |
1(0's child) 7 19->0 parent's child[1]->[0],[7]->0,[19]->0
__|_______ | |
| | 9 20
2 4 (2 & 4 is 1 parent's child) |
| | 21,22,23
| 5
|
6,8,10,11,12
|
17
|
18
我想将0作为根元素id,然后检查它的子元素和子元素,
我的结果是
$result = Array
(
[0] => 1 -->i will use my categoryname here $myarray[1]['categoryname']
[1] => 1->2 ---> $myarray[1]['categoryname']->$myarray[2]['categoryname']
[2] => 1->2->6 --->and so on
[3] => 1->2->8
[4] => 1->2->10
[5] => 1->2->11
[6] => 1->2->12
[7] => 1->2->12->17
[8] => 1->2->12->17->18
[9] => 1->4
[10] => 1->4->5
[11] => 7
[12] => 7->9
[13] => 19
[14] => 19->20
[15] => 19->20->21
[16] => 19->20->22
[17] => 19->20->23
)
类似这个问题,,
我的密码是
$tree = $this->to_tree($array);
function to_tree($array)
{
$flat = array();
$tree = array();
$abc = array();
foreach ($array as $child => $parent)
{
if (!isset($flat[$child])) {
$flat[$child] = array();
}
if (!empty($parent)) {
$flat[$parent][$child] =& $flat[$child];
} else {
$tree[$child] =& $flat[$child];
}
}
return $tree;
}
这将打印层次树请帮帮我,
谢谢。您好,我很想帮忙,但我无法真正理解第二个(结果)数组,或者更好地理解第一个和第二个数组之间的真正关系。yoyu确定你写对了吗?或者请您进一步解释一下?如果父id等于零,则其子id为store,然后检查此子id是否有另一个grand child id如果是,则父id->子id为store,且此all值按顺序存储在另一个数组中在my child->父数组中我在父数组中有3个0元素,而此0元素的子id为1,7,19使用这个id我们可以找到孩子id和孙子id。@Stratboy现在我打印我的树,如果可以的话请帮助我…时间不多了,对不起。不过,我认为你的目标还不太清楚。您想要第三个阵列吗?孩子们该如何建设?你所说的[15]=>19->20->21是什么意思?这是一种表示,而不是真正的数组形状。你想要的最终形状是什么?