afd
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;
}