php递归子节点,PHP 递归取子集

效果:

bfde75f7da62

{

"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

}

}

代码:

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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值