WEB开发网
开发学院WEB开发PHP PHP无限级分类方法及代码 阅读

PHP无限级分类方法及代码

 2008-11-19 15:38:44 来源:WEB开发网   
核心提示: 注意,就像前面的查询一样,PHP无限级分类方法及代码(6),我们必须使用一个ORDER BY子句来对节点排序,这个查询将返回:+---+| title |+---+| Food|| Fruit || Red |+---+我们现在只要把各行连起来,添加每一个他看见的节点,你运行了这个函数之后

注意,就像前面的查询一样,我们必须使用一个ORDER BY子句来对节点排序。这个查询将返回:

+-------+

| title |

+-------+

| Food |

| Fruit |

| Red  |

+-------+

我们现在只要把各行连起来,就可以得到“Cherry”的路径了。

有多少个后续节点?How Many Descendants

如果你给我一个节点的左值和右值,我就可以告诉你他有多少个后续节点,只要利用一点点数学知识。

因为每个后续节点依次会对这个节点的右值增加2,所以后续节点的数量可以这样计算:

descendants = (right – left - 1) / 2

利用这个简单的公式,我可以立刻告诉你2-11的“Fruit”节点有4个后续节点,8-9的“Banana”节点只是1个子节点,而不是父节点。

自动化树遍历

现在你对这个表做一些事情,我们应该学习如何自动的建立表了。这是一个不错的练习,首先用一个小的树,我们也需要一个脚本来帮我们完成对节点的计数。

让我们先写一个脚本用来把一个邻接列表转换成前序遍历树表格。

<a target=PHP无限级分类方法及代码" onload="return imgzoom(this,550);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>

这是一个递归函数。你要从rebuild_tree('Food',1); 开始,这个函数就会获取所有的“Food”节点的子节点。

如果没有子节点,他就直接设置它的左值和右值。左值已经给出了,1,右值则是左值加1。如果有子节点,函数重复并且返回最后一个右值。这个右值用来作为“Food”的右值。

递归让这个函数有点复杂难于理解。然而,这个函数确实得到了同样的结果。他沿着树走,添加每一个他看见的节点。你运行了这个函数之后,你会发现左值和右值和预期的是一样的(一个快速检验的方法:根节点的右值应该是节点数量的两倍)。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:PHP 无限 分类

编辑录入:coldstar [复制链接] [打 印]
赞助商链接