html无限级分类前端输出输出,无限级分类问题

这篇博客讨论了如何从包含parent_id字段的数组中构建一棵树,并将其在前端展示。博主分享了使用PHP处理数据,生成TreeNode结构并进行递归遍历的方法,以实现前端的树状布局。此外,还提到了Python实现的类似功能。
摘要由CSDN通过智能技术生成

0 =>

array (size=12)

'id' => string '1' (length=1)

'name' => string 'Test' (length=13)

'parent_id' => string '0' (length=1)

'path' => string '0,' (length=2)

'order' => string '100' (length=3)

'from' => string '0' (length=1)

'qyid' => null

'lng' => string '103.86182' (length=9)

'lat' => string '36.053103' (length=9)

'level' => null

'desc' => null

'level_code' => null

1 =>

array (size=12)

'id' => string '46' (length=2)

'name' => string 'Test2' (length=9)

'parent_id' => string '1' (length=1)

'path' => string '0,1' (length=3)

'order' => string '0' (length=1)

'from' => string '0' (length=1)

'qyid' => null

'lng' => null

'lat' => null

'level' => null

'desc' => null

'level_code' => null

我有如上的一个数组,其中parent_id代表该节点的父节点。我现在打算生成一棵树。我接到前端的html如下:

px_02.png

Test

  • px_02.png

    Test2

  • px_02.png

    Test3

    • px_02.png

      Test4

大家也可以忽略上面的html。

那么递归该怎么写呢??? 虚心求教~~

回答:

首先,你需要一个树的数据结构来按照一定的结构来组织你的数据,这个树当中的每个节点用如下的TreeNode来表示,然后递归的遍历你的数据,在遍历的过程中动态的生成这个由TreeNode组成的树。并返回到前台。在前台再遍历一下,就能组成你要的效果了

public class TreeNode {

'id' => string '1' (length=1)

'name' => string 'Test' (length=13)

'parent_id' => string '0' (length=1)

'path' => string '0,' (length=2)

'order' => string '100' (length=3)

'from' => string '0' (length=1)

'qyid' => null

'lng' => string '103.86182' (length=9)

'lat' => string '36.053103' (length=9)

'level' => null

'desc' => null

'level_code' => null

public List nodes;

}

回答:

无限级json的功能估计是菜单了。

和楼上说的差不多,建个多叉树。你想要的结果就是多叉树前序遍历之后的结果。python的我实现过~~php的只能提供解决方案了~(如果兄弟之间要求有序的话还需要加其他的操作)找到一个php的

希望有帮助。

回答:

我也正在做这个功能,终于弄出来了

我的数据库结构

66e9b65fe3f2e800e1e15323bee60702.png

实现的效果

d7fb49724bef94134cb39185ade2b98a.png

贴代码

def _load_menuTree(self):

'加载系统菜单'

menus = api.resource.Resource().all(fields='id, pid, menu_name, resource_uri', display = 'S')

_items = {r.id:r for r in menus}

_items = defaultdict(hash, _items)

for k, r in _items.items():

r['children'] = deque()

retval = deque()

for k, r in _items.items():

if r.pid in _items:

_items[r.pid]['children'].append(_items[r.id])

else:

retval.append(_items[r.id])

return retval

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值