Php 如何将一系列父子关系转换为一个序列数组?

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] =>

我在数组中有一堆父子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] => 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是什么意思?这是一种表示,而不是真正的数组形状。你想要的最终形状是什么?