php 无限级分类,超级简单的无限级分类,支持输出树状图

返回一维数组

//无限级分类
 
function GetTree($arr$pid 0$step 0)
{
    static $tree;
    foreach ($arr as $key => $val) {
        if ($val['pid'] == $pid) {
            $name isset($val['title']) ? $val['title'] : $val['name'];
            $flg str_repeat('┗━ '$step);
            $val['tag'] = $flg $name;
            $val['level'] = $step;
            $tree[] = $val;
            GetTree($arr$val['id'], $step 1);
        }
    }
    return $tree;
}

返回多维数组

/**
 * @param $items [需要处理的数组]
 * @return array [多维数组]
 */
function generateTree($items)
{
    $tree array();
    $tmp1 array();
    foreach ($items as $key => $val) {
        $tmp1[$val['id']] = &$items[$key];
    }
    foreach ($tmp1 as $item) {
        if (isset($tmp1[$item['pid']])) {
            $tmp1[$item['id']]['level'] += 1;
            $tmp1[$item['id']]['tag'] = str_repeat('┗━ '$tmp1[$item['id']]['level']) . $tmp1[$item['id']]['title'];
            $tmp1[$item['pid']]['son'][] = &$tmp1[$item['id']];
        } else {
            $tmp1[$item['id']]['level'] = 0;
            $tree[] = &$tmp1[$item['id']];
        }
    }
    return $tree;
}

查询数组pid以下所有子树ID

function getDepUserTree($arr, $pid = 0)
{
    static $tree;
    foreach ($arr as $key => $val) {
        if ($val['father'] == $pid) {
            $tree[] = $val['id'];
            getDepUserTree($arr, $val['id']);
        }
    }
    return $tree;
}

posted on   何苦->  阅读(96)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示