没有递归实现的无限类分类实例(非递归)
为了实现无限级的分类,递归通常是第一个也是最容易想到的,但是递归通常被认为是一种资源占用方法,所以许多系统不考虑递归。本文通过一个数据库的设计,实现了一个sql语句。
数据库字段可能如下所示:
复制代码代码如下:ID号
父分类号
class_name分类名称
道路分类的道路,以ID为节点,组成一个类似的字符串,这种字符串1
可以假定有以下数据:
复制代码代码如下所示:
ID FID class_name路径
10分类1, 1,
20分类2, 2,
31分类1-1,1,3,
41分类1,1,
52分类1,2,
64分类1-2-1,1,4,6,
无限类分类操作码:
< PHP
从树按路径排序;
$结果;
而($行= $ NBS -> fetch_array($结果)){
如果(substr_count($行{ 'path},',')> 2){
为($我= 0;$我<(substr_count($行{ 'path},',')2美元);i++)
回声';
}
'class_name'} { echo行。;
}
>
美元mysql_connect conn =('localhost ','root ','root);
mysql_select_db('wanggou123,$ Conn);
mysql_query(让名字utf8);
为SQL =选择ID,concat(catpath,,ID)作为abspath,通过abspath从类别顺序的名字;
查询= mysql_query美元($ SQL);
而($行= mysql_fetch_array($查询)){
*第一种显示方法
* /
/ * $空间= str_repeat('',计数(爆炸(合行,{ 'abspath ' }))- 1);
回波空间。$行{ 'name' }。
;
第二种显示方法
* /
$空间= str_repeat('',计数(爆炸(合行,{ 'abspath ' }))- 1);
$。$空间。$行。{ 'name' }。;
}
回波选项;
出口();
回波。美元期权;
NBS是一个数据库操作类,这种方法简单明了!