php 将节点解析为树。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 将节点解析为树。相关的知识,希望对你有一定的参考价值。

<?php
/**
 * Created by PhpStorm.
 * User: dailybird
 * Date: 17/6/1
 * Time: 下午11:57
 */


$nodes = [
    [
        'id' => 5,
        'parent_id' => 2
    ],
    [
        'id' => 2,
        'parent_id' => 1
    ],
    [
        'id' => 3,
        'parent_id' => 1
    ],
    [
        'id' => 1,
        'parent_id' => -1
    ],
    [
        'id' => 6,
        'parent_id' => 4
    ],
    [
        'id' => 8,
        'parent_id' => 7
    ],
    [
        'id' => 9,
        'parent_id' => 7
    ],
    [
        'id' => 7,
        'parent_id' => 4
    ],
    [
        'id' => 10,
        'parent_id' => 4
    ],
    [
        'id' => 4,
        'parent_id' => -1
    ],
];


function resolveNodesToTree(&$tree, &$nodes, $parentNode)
{
    foreach ($nodes as $index => $node) {
        if($node['parent_id'] === $parentNode){
            $foo = resolveNodesToTree($tree[$node['id']], $nodes, $node['id']);
            if(!is_null($foo)){
                $node['children'] = $foo;
                $tree[] = $node;
                unset($nodes[$index]);
            }else{
                unset($tree[$node['id']]);
            }
        }
    }
    return $tree;
}

const ROOT_NODE = -1;
$tree = [];
resolveNodesToTree($tree, $nodes, ROOT_NODE);

print_r(json_encode($tree));



以上是关于php 将节点解析为树。的主要内容,如果未能解决你的问题,请参考以下文章

无向图转换为树

如何将两个父节点连接到一个子节点以及如何务实地为树中的每个节点制作工具提示?在 D3 js (SVG) 中

为树中的节点添加颜色

数组转换为树树转换为数组

将我的数据库表转换为树并在 php 中获取叶节点

在 Firebase 中插入 JSON 显示为字符串,而不是显示为树