afd

    image.png
    image.png

    public function index()
    {
    $data = \DB::table(‘menu’)->get()->map(function ($value) {
    return (array)$value;
    })->toArray();
    $res = getree($data);
    //用函数内全局变量 将树状数组转化为二维数组
    $arr1 = [];
    $len = 0;
    getreelist($res, $arr1, $len);
    dd($arr1);
    return view(‘admin.menu.index’, [‘datas’ => $arr1]);
    }
    //带有父子级关系的数组转化为 树状数组
    function getree($list, $pk = ‘id’, $pid = ‘pid’, $child = ‘_child’, $root = 0)
    {
    $tree = array();
    $packData = array();
    foreach ($list as $data) {
    $packData[$data[$pk]] = $data;
    }
    foreach ($packData as $key => $val) {
    if ($val[$pid] == $root) {
    //代表根节点
    $tree[] =& $packData[$key];
    } else {
    //找到其父类
    $packData[$val[$pid]][$child][] =& $packData[$key];
    // $tree[] = & $packData[$key];
    }
    }
    return $tree;
    }
    //树状数组转化为二维顺序数组
    function getreelist(&$list, &$arr = [], &$len = 0)
    {
    foreach ($list as $k => $value) {
    $arr[$len] = $value;
    if (isset($value[‘_child’])) {
    $len++;
    getreelist($value[‘_child’], $arr, $len);
    } else {
    $len++;
    }
    }
    return;
    }