一个简单的PHP递归函数,用于实现无限级分类

以下是一个简单的PHP递归函数,用于实现无限级分类:

```
function buildTree($rows, $parentId = 0) {
  $tree = array();
  foreach ($rows as $row) {
    if ($row['parent_id'] == $parentId) {
      $children = buildTree($rows, $row['id']);
      if ($children) {
        $row['children'] = $children;
      }
      $tree[] = $row;
    }
  }
  return $tree;
}
```

在此函数中,$rows是一个包含所有分类信息的数组,$parentId是当前分类的父级ID,默认为0(即顶级分类)。函数首先创建一个空的$tree数组,然后循环遍历所有分类信息,找到所有父级ID等于$parentId的分类,将它们添加到$tree数组中。对于每个分类,如果它有子分类,则递归调用函数本身,将子分类添加到当前分类的“children”属性中。最后,将$tree数组返回。

使用这个函数,我们可以轻松地将一个多层级的分类列表转换为一个多维数组,每个元素包含分类的所有信息以及它的子分类。例如,以下是一个分类列表:

```
id  name       parent_id
1   电脑       0
2   手机       0
3   台式电脑   1
4   笔记本电脑 1
5   智能手机   2
6   功能手机   2
7   联想台式机 3
8   戴尔笔记本 4
9   华为手机   5
```

使用buildTree函数,可以将这个列表转换为以下多维数组:

```
[
  [
    'id' => 1,
    'name' => '电脑',
    'parent_id' => 0,
    'children' => [
      [
        'id' => 3,
        'name' => '台式电脑',
        'parent_id' => 1,
        'children' => [
          [
            'id' => 7,
            'name' => '联想台式机',
            'parent_id' => 3
          ]
        ]
      ],
      [
        'id' => 4,
        'name' => '笔记本电脑',
        'parent_id' => 1,
        'children' => [
          [
            'id' => 8,
            'name' => '戴尔笔记本',
            'parent_id' => 4
          ]
        ]
      ]
    ]
  ],
  [
    'id' => 2,
    'name' => '手机',
    'parent_id' => 0,
    'children' => [
      [
        'id' => 5,
        'name' => '智能手机',
        'parent_id' => 2,
        'children' => [
          [
            'id' => 9,
            'name' => '华为手机',
            'parent_id' => 5
          ]
        ]
      ],
      [
        'id' => 6,
        'name' => '功能手机',
        'parent_id' => 2
      ]
    ]
  ]
]
```

这个多维数组表示了一个树形结构,顶级节点包含所有子节点的信息。可以根据需要使用这个数组来生成分类菜单、面包屑导航等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值