美文网首页
PHP 递归取子集

PHP 递归取子集

作者: F的平方 | 来源:发表于2020-07-08 11:09 被阅读0次

    效果:

    {

        "errcode": 1,

        "errmsg": "ok",

        "result": {

            "id": "129365a2-bc2c-11ea-4dd1-000c29547b13",

            "company_id": "68753A44-4D6F-1226-9C60-0050E4C00067",

            "user_account": "admin",

            "user_name": "zha7ngs",

            "user_gender": 1,

            "user_mobile": "17718327230",

            "user_phone": "",

            "user_email": "24@qq.com",

            "user_avatar": "2",

            "privilege_list": [

                {

                    "privilege_id": "678f6dae-c018-11ea-bdd1-000c29547b13",

                    "privilege_caption": "0a3dsb1w3",

                    "privilege_type": 2,

                    "privilege_sort": 10,

                    "privilege_url": "123456789123456789",

                    "privilege_icon": "3",

                    "pid": "5847df16-c018-11ea-9344-000c29547b13",

                    "submunu": [

                        {

                            "privilege_id": "44ff3754-c02e-11ea-bdd1-000c29547b13",

                            "privilege_caption": "b1w3",

                            "privilege_type": 2,

                            "privilege_sort": 10,

                            "privilege_url": "123456789123456789",

                            "privilege_icon": "1",

                            "pid": "678f6dae-c018-11ea-bdd1-000c29547b13",

                            "submunu": [

                                {

                                    "privilege_id": "686274b6-c030-11ea-9344-000c29547b13",

                                    "privilege_caption": "b1ws3",

                                    "privilege_type": 2,

                                    "privilege_sort": 10,

                                    "privilege_url": "123456789123456789",

                                    "privilege_icon": "我s223",

                                    "pid": "44ff3754-c02e-11ea-bdd1-000c29547b13"

                                }

                            ]

                        },

                        {

                            "privilege_id": "73938518-c018-11ea-9344-000c29547b13",

                            "privilege_caption": "0fdsb1w3",

                            "privilege_type": 2,

                            "privilege_sort": 10,

                            "privilege_url": "123456789123456789",

                            "privilege_icon": "4",

                            "pid": "678f6dae-c018-11ea-bdd1-000c29547b13"

                        }

                    ]

                },

                {

                    "privilege_id": "80524c76-c018-11ea-bdd1-000c29547b13",

                    "privilege_caption": "0ffd1w3",

                    "privilege_type": 2,

                    "privilege_sort": 10,

                    "privilege_url": "123456789123456789",

                    "privilege_icon": "8",

                    "pid": "0",

                    "submunu": [

                        {

                            "privilege_id": "8ffd3988-c018-11ea-8680-000c29547b13",

                            "privilege_caption": "0ffdf1w3",

                            "privilege_type": 2,

                            "privilege_sort": 10,

                            "privilege_url": "123456789123456789",

                            "privilege_icon": "5",

                            "pid": "80524c76-c018-11ea-bdd1-000c29547b13"

                        }

                    ]

                }

            ],

            "role_list": "[\"a\", \"b\"]",

            "department_list": "[\"1\", \"2\"]",

            "create_time": "2020-07-02 14:20:06",

            "create_user": "admin",

            "is_frozen": 0

        }

    }

    代码:


    <?php

    namespace app\test\controller;

    use think\Controller;

    /**

    * 临时代码调试专用控制器

    */

    class Test extends Controller {

    //属性声明

    private $model = null;

    //方法声明

    /**

    * 构造方法

    * @param \think\Request $request

    */

    public function __construct(\think\Request $request = null) {

    parent::__construct($request);

    }

    /**

    * 入口测试方法

    */

    public function index() {

    $data = [

    ['id' => 1, 'name' => 'n1', 'pid' => 0],

    ['id' => 4, 'name' => 'n1-1', 'pid' => 1],

    ['id' => 5, 'name' => 'n1-2', 'pid' => 1],

    ['id' => 2, 'name' => 'n2', 'pid' => 0],

    ['id' => 3, 'name' => 'n3', 'pid' => 0],

    ['id' => 6, 'name' => 'n1-1-1', 'pid' => 4],

    ['id' => 7, 'name' => 'n1-1-2', 'pid' => 4],

    ['id' => 8, 'name' => 'n1-1-2-1', 'pid' => 7],

    ];

    $r = $this -> generateTree($data);

    p($r);

    }

    /**

    * 利用引用算法获取无限级权限树

    * @param type $data

    * @return type

    */

    public function generateTree($data) {

    $items = array();

    foreach ($data as $v) {

    $items[$v['id']] = $v;

    }

    $tree = array();

    foreach ($items as $k => $item) {

    if (isset($items[$item['pid']])) {

    $items[$item['pid']]['son'][] = &$items[$k];

    } else {

    $tree[] = &$items[$k];

    }

    }

    return $tree;

    }

    }

    相关文章

      网友评论

          本文标题:PHP 递归取子集

          本文链接:https://www.haomeiwen.com/subject/epbqcktx.html