构造无限层级树形菜单

<?php
/**
 * Created by PhpStorm.
 * User: liupf
 * Date: 18-8-30
 * Time: 下午11:44
 */

function arrayConvertToTree ($array, $rootId) {
    $group = [];
    $map = [];

    foreach ($array as $val) {
        $group[$val['parent_id']][] = $val;
        $map[$val['id']] = [
            $val['parent_id'],
            count($group[$val['parent_id']]) - 1
        ];
    }

    foreach ($group as $key => &$val) {
        if (!empty($map[$key])) {
            $pos = $map[$key];
            $group[$pos[0]][$pos[1]]['children'] = &$val;
      }
    }

    return $group[$rootId];
}

$raw_data = [
    [
        'id' =>	1,
        'parent_id' => 0,
        'value' => 1,
        'children' => []
    ],
    [
        'id' =>	2,
        'parent_id' => 1,
        'value' => 2,
        'children' => []
    ],
    [
        'id' =>	3,
        'parent_id' => 1,
        'value' => 3,
        'children' => []
    ],
    [
        'id' =>	4,
        'parent_id' => 2,
        'value' => 4,
        'children' => []
    ],
    [
        'id' =>	5,
        'parent_id' => 2,
        'value' => 5,
        'children' => []
    ],
    [
        'id' =>	6,
        'parent_id' => 3,
        'value' => 6,
        'children' => []
    ],
    [
        'id' =>	7,
        'parent_id' => 3,
        'value' => 7,
        'children' => []
    ],
    [
        'id' =>	8,
        'parent_id' => 4,
        'value' => 8,
        'children' => []
    ],
    [
        'id' =>	7,
        'parent_id' => 4,
        'value' => 7,
        'children' => []
    ]
];

$tree = arrayConvertToTree($raw_data, 0);

print_r($tree);

  

转载于:https://www.cnblogs.com/huixuexidezhu/p/9563446.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值