在开发中经常需要用到树形数据,比如无限多级分类,就是典型的树形结构。这里面的算法,用到了递归思想,为了简化开发过程,我编写了一个工具来提升开发效率,
它就是PHPTree。
git地址:https://git.oschina.net/jiusem/PHPTree.git
使用方法:
<?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); ?>
输出:
{ "children": [ { "id": 1, "name": "book", "parent_id": 0, "expanded": true, "children": [ { "id": 3, "name": "book1", "parent_id": 1, "expanded": true, "children": [ { "id": 4, "name": "book2", "parent_id": 3, "leaf": true } ] } ] }, { "id": 2, "name": "music", "parent_id": 0, "leaf": true } ] }
生成的数据就是树形结构了,可以结合zTree、ExtJS等前端框架来使用了。
关于数据库的设计,只需要保证包含 id 和 parent_id 字段即可,其他字段可以自行添加,不会影响数据生成。parent_id是父级ID,如果是一级分类,就设为 0 。
时间: 2024-10-12 02:24:27