PHP类:如何快速建立树形结构清单

来源:admin  更新:2023-01-28 09:49  分类:网络技术  标签: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 '<h1>PHPTree树形结构</h1>';
echo '<select  style="width:300px;">';
foreach($r as $item){
    echo '<option>';
    echo str_repeat('......',$item['level']);
    echo $item['name'];
    echo '</option>';
}
echo '</select>';


树形结构PHP类完整源代码

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

树形结构PHP类完整源代码


版权声明嗨网博客部分文章源自网络收集,不代表嗨网立场,如涉及侵权请联系嗨网删除。
其他若无特别说明则为嗨网原创文章、持续更新。未授权媒体、微信公众号不得使用嗨网内容。 个人自媒体可署名、保留原始链接的情况下转载
转载请注明 来源嗨网higrid.net,链接: https://higrid.net/posts/php_class_tree.html
本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除