---
layout: post
title: PHP类:如何快速建立树形结构清单
description: PHP类快速生成无限级分类,本文提供演示和源代码
keywords: PHP,树形结构,源代码
author: admin
date: 2023-01-28 09:49
category: 网络技术
tags: php
---

在开发中经常需要用到树形数据,比如无限多级分类,就是典型的树形结构。在web开发中,前端需要实现 **tree树** 。
这些tree树在初始化的时候,通常需要 **tree描述的json数组** 。 抽象类快捷灵活高效地生成tree结构数组的组装,无需关心递归的一些东西,对于新手非常友好。除此之外,还可以以xml, **html树形结构** 输出,封装得非常灵活。这里面的算法,用到了递归思想,为了简化开发过程,本篇介绍PHPTree,可以快速和ExtJS、zTree等前端框架整合使用。

## 树形结构PHP类用法与实例

```php

require('phptree_class.php');

//原始数据, 从数据库读出
$data = array(
array(
'id'=>1,
'name'=>'book',
'parent_id'=>0
),
array(
'id'=>2,
'name'=>'music',
'parent_id'=>0
),
array(
'id'=>3,
'name'=>'book1',
'parent_id'=>1
),
array(
'id'=>4,
'name'=>'book2',
'parent_id'=>3
)
);

$r = phptree::maketree($data);
echo json_encode($r);

```

生成的数据就是 **树形结构** 了,可以 **结合extjs等前端框架** 来使用了

如果不需要使用前端框架,只是用html输出,可以使用下面的方法:

```
$r = phptree::maketreeforhtml($data);
```

关于 **数据库的设计** ,只需要保证包含 id 和 parent_id 字段即可,其他字段可以自行添加,不会影响数据生成。parent_id是父级id,如果是一级分类,就设为 0 。当然,字段也是可以配置的。请继续往下看,我将介绍一些进阶的使用方法。

## 树形结构PHP类HTML输出例子

```
$data = array(
array(
'id' => 1,
'name' => '用户管理',
'parent_id' => 0
),
array(
'id' => 2,
'name' => '用户列表',
'parent_id' => 1
),
array(
'id' => 3,
'name' => '权限管理',
'parent_id' => 1
),
array(
'id' => 4,
'name' => '文章管理',
'parent_id' => 0
),
array(
'id' => 5,
'name' => '新闻',
'parent_id' => 4
),
array(
'id' => 6,
'name' => '国内新闻',
'parent_id' => 5
)
);


$r = PHPTree::makeTreeForHtml($data);

echo '

PHPTree树形结构

';
echo '';



```



## 树形结构PHP类完整源代码

以下为嗨网HiGrid.net 整理的读取 **PHP类** **树形结构完整源代码** ,请自行拷贝使用。

[ 树形结构PHP类完整源代码](/show/p/phptree_class)