数组重组为树状结构

马万·扎卡里亚(Marwan Zakariya)

我在此结构中有一个包含用户元素的数组,每个用户都可以与另一个用户相关。
我只想创建一个用户树,每个用户都包含其子用户,就像一棵树一样。

Array
(
[0] => Array
    (
        [username] => user1
        [parent_user] => null
    )

[1] => Array
    (
        [username] => user2
        [parent_user] => user1
    )

[2] => Array
    (
        [username] => user3
        [parent_user] => user2
    )

[3] => Array
    (
        [username] => user4
        [parent_user] => user3
    )

[4] => Array
    (
        [username] => user5
        [parent_user] => null
    )

这里的user4在user3用户中,user3在user2用户中包含其用户,user2在user1用户中包含其用户,在user1用户中包含user5

所需的结构像

array(
[username] => user1
[users] => array(
           [0] => array(
                  username => user5
                  users => array()
                  )
           [1] => array(
                  username => user2
                  users => array(
                           [0] => array(
                                  username => user3
                                  users => array(
                                           [0] => array(
                                                  [0] => array(
                                                         username => user4
                                                         users => array()
                                                         )
                                                  )
                                           )
                                  )
                            )
                    )
             )
  )
伊斯兰教的伊斯兰教|

试试这个

function get_child($parent,$users)//a function for recursive call
{
    $child=array();
    foreach($users as $user)
    {
        if($user['parent_user']==$parent)
        {
            $child[]=array("username"=>$user['username']);
        }
    }
    if(sizeof($child)>0)
    {
        foreach($child as &$c)
        {
            $c['users']=get_child($c['username'],$users);
        }
    }
    return $child;
}

现在编写以下代码

//$users //lets assume your main array name $users

    $root_user=array();
    foreach($users as $user)
    {
        if($user['parent_user']==null)
        {
            $root_user[]=array("username"=>$user['username']);
        }
    }

    foreach($root_user as &$user)
    {
        $user['users']=get_child($user['username'],$users);
    }

   print_r($root_user);//now print out the root_user which contains your desired result

即使使用以下代码也可以轻松完成

$root_user=get_child(null,$users);
print_r($root_user);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何将这个数组重组为结构不同的数组

来自分类Dev

JSON 数组到树状结构 JSON 数组

来自分类Dev

将数据加载为树状结构

来自分类Dev

将数组重组为多维数组

来自分类Dev

将JSON解析为自定义的“树状”文件结构

来自分类Dev

javascript将嵌套字典转换为树状数组结构

来自分类Dev

如何将数据对象重组为对象数组?

来自分类Dev

用命名键将JavaScript对象重组为对象数组

来自分类Dev

我需要将数组重组为自定义顺序

来自分类Dev

raid5数组重组为raid0

来自分类Dev

路径的树状结构

来自分类Dev

以树状结构聚集文档

来自分类Dev

链接树状结构

来自分类Dev

Graphviz:树状结构

来自分类Dev

在R中将团队结构重组为个人级别的数据(同时保留团队级别的信息)

来自分类Dev

数组重组PHP

来自分类Dev

重组多维数组

来自分类Dev

如何重组多维数组

来自分类Dev

PHP数组重组

来自分类Dev

Javascript重组对象数组

来自分类Dev

如何最好地将 JSON 子数据对象数组重组为父数组

来自分类Dev

在python中使用树状结构

来自分类Dev

从树状结构中删除节点

来自分类Dev

从树状结构返回父ID

来自分类Dev

使用RxAndroid生成树状结构

来自分类Dev

计数树状结构中的层数

来自分类Dev

WPF绘制矩形树状结构

来自分类Dev

将指向结构数组的指针设置为等于结构数组

来自分类Dev

将2D numpy数组重组为3D