$arr = [
['id' => 1, 'pid' => 0, 'name' => '1级菜单1'],
['id' => 2, 'pid' => 0, 'name' => '1级菜单2'],
['id' => 3, 'pid' => 1, 'name' => '2级菜单1'],
['id' => 4, 'pid' => 2, 'name' => '2级菜单2'],
['id' => 5, 'pid' => 3, 'name' => '3级菜单1'],
['id' => 6, 'pid' => 4, 'name' => '3级菜单2'],
];
foreach ($arr as $k => &$item) {
$pid = &$item['pid'];
$map[$item['id']] = &$item;
if (empty($map[$pid])) {
$res[$k] = &$item;
} else {
$pItem = &$map[$pid];
$pItem['child'][] = &$item;
}
}
return $res;
分享一个简单二维数组转成树状图小算法,可以做的东西还挺多的,多级菜单、省市区等存在pid上下等级的数据都可以。平时都是直接框架with查询,还是要熟悉一下基础的算法,近期多看看基础算法,分享一下,新公司近期也是熟悉项目和维护
推荐