php子孙树生成层级-递归篇

毫不废话,代码如下:

复制代码
<?php
$list = [
    ['id' => 1, 'pid' => 0, 'name' => '江苏'],
    ['id' => 2, 'pid' => 0, 'name' => '浙江'],
    ['id' => 3, 'pid' => 1, 'name' => '苏州'],
    ['id' => 4, 'pid' => 3, 'name' => '吴中区'],
    ['id' => 5, 'pid' => 2, 'name' => '宁波'],
    ['id' => 6, 'pid' => 4, 'name' => '工业园'],
    ['id' => 7, 'pid' => 6, 'name' => '中新大道'],
    ['id' => 8, 'pid' => 5, 'name' => '鄞州区'],
    ['id' => 9, 'pid' => 8, 'name' => '天童南路'],
];

$list = get_tree($list);
foreach ($list as $key => $value) {
    echo str_repeat(" ",$value['level']) . $value['name'] . "\n";
}

function get_tree($list = [], $pid = 0, $level = 0)
{
    static $result = [];
    foreach ($list as $key => $value) {
        if ($value['pid'] == $pid) {
            $value['level'] = $level;
            $result[] = $value;
            unset($list[$key]);
            get_tree($list, $value['id'], $level+1);
        }
    }
    return $result;
}
复制代码

展示结果如下:

posted @   李照耀  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
历史上的今天:
2019-03-25 php处理数据分组问题
2016-03-25 php 写一个水仙花数的函数
点击右上角即可分享
微信分享提示