PHP 处理菜单分级树状结构

全屏阅读
  • 基本信息
<?php  
  
// 原始数组  
$originalArray = [  
    0 => ["id" => 1, "parent_id" => 0, "name" => "首页", "name_id" => "1"],  
    1 => ["id" => 2, "parent_id" => 0, "name" => "用户管理", "name_id" => "2"],  
    2 => ["id" => 3, "parent_id" => 2, "name" => "商品管理", "name_id" => "2-3"],  
    3 => ["id" => 4, "parent_id" => 2, "name" => "余额管理", "name_id" => "2-4"]  
];  
  
// 递归函数,用于构建树状结构  
function buildTree($array, $parentId = 0) {  
    $tree = [];  
    foreach ($array as $item) {  
        if ($item['parent_id'] == $parentId) {  
            $children = buildTree($array, $item['id']);  
            if ($children) {  
                $item['children'] = $children;  
            }  
            $tree[] = $item;  
        }  
    }  
    return $tree;  
}  
  
// 调用递归函数构建树状结构  
$tree = buildTree($originalArray);  
  
// 打印树状结构  
print_r($tree);  
?>

运行上述代码将输出以下结果:

Array  
(  
    [0] => Array  
        (  
            [id] => 1  
            [parent_id] => 0  
            [name] => 首页  
            [name_id] => 1  
        )  
  
    [1] => Array  
        (  
            [id] => 2  
            [parent_id] => 0  
            [name] => 用户管理  
            [name_id] => 2  
            [children] => Array  
                (  
                    [0] => Array  
                        (  
                            [id] => 3  
                            [parent_id] => 2  
                            [name] => 余额管理  
                            [name_id] => 2-3  
                        )  
                    [1] => Array  
                        (  
                            [id] => 4  
                            [parent_id] => 2  
                            [name] => 商品管理  
                            [name_id] => 2-4  
                        )  
                )  
        )  
)

这样,你就成功地将原始数组转换成了树状结构。每个节点都有一个唯一的id,以及指向其父节点的parent_id。如果一个节点有子节点,它还将包含一个children数组。

顶一下
(0)
100%
订阅 回复
踩一下
(0)
100%
» 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。

目前有 0 条留言 其中:访客:0 条, 博主:0 条

给我留言

您必须 [ 登录 ] 才能发表留言!