树形结构是一层次的嵌套结构。一个树形结构的外层和内层有相似的结构,所以这种结构多可以递归的表示。经典数据结构中的各种树状图是一种典型的树形结构:一颗树可以简单的表示为根,左子树,右子树。今天小编就要带大家一起来学习一下,在php中应该如何计算树形结构呢?
多级的树状结构的论坛,产品分类,邮件列表等等有很多的地方相信大家应该都会遇到这样一种问题:那就是怎样才可以成功的存储多级结构的数据呢?现在我们就一起来学习一下吧。
作为一名开发人员,相信大家对于PHP这一种编程语言应该不再陌生了吧。那么大家都应该知道,那就是在PHP的应用中,提供后台数据存储的一般情况下都是关系型数据库(关系数据库,是创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。)。毕竟这一种数据库可以帮我们保存非常多的数据,除此之外,还可以更新服务以及提供高效的数据检索。
一、基本形式
在这里,小编问大家一个问题,大家知道关系型数据的基本形式是怎样的吗?没错,就是一个纵横交错的表,简单来说就是一个平面的结构。假如说大家想要把多级树状结构存储在关系型数据库里面的话,那么就需要进行合理的翻译工作。在接下来的教程中,小编会以一些实在好用的经验以及自己的所见所闻和大家一起探讨一下这一个问题的。
层级结构的数据保存在平面的数据库中基本上有两种常用设计方法,具体的设计方法如下:
第一种设计方法:预排序遍历树算法(即modified preorder tree traversal algorithm,这种方法不使用递归查询算法,有更高的查询效率。)
第二种设计方法:毗邻目录模式(即adjacency list model,这种模式我们经常用到,很多的教程和书中也介绍过。我们通过给每个节点增加一个属性parent来表示这个节点的父节点从而将整个树状结构通过平面的表描述出来。)
小编的专业并不是计算机科学与技术,也没有学过关于数据结构的相关知识。所以这两个方法的名字都是小编自己按照字面的中文意思翻译出来的,假如说真的是翻译错误了话,那么就请大家多多指教哈。
二、示范例子
也许会有人觉得,这两个方法的名字听起来好像非常吓人的样子。但是小编想说的是,其实这都是十分容易理解的,千万不要被它外表所欺骗了。为了大家可以更加方便的理解,小编在这里就使用了一个较为简单食品目录作为本篇教程示范例子的数据吧。具体的数据结构,如图所示:
在这里,为了可以照顾到一些英语水平并不是特别好的PHP爱好者,小编还特意带上了中文翻译。具体的中文翻译,如图所示:
小编结语:
在这篇编程语言中,小编主要是向大家介绍了在PHP中计算树形结构的实现方法。在这几种方法中,小编最钟情的还是第一种方法哟,因为操作起来,会更加的方便更加的简单。课课家教育,你的设计天堂。
¥299.00
¥29.00
¥498.00
¥399.00