php无限极分类是经常要用到的,一个简单的php无限极分类的代码如下:
数据表结构
CREATE TABLE IF NOT EXISTS `category` ( `id` int(5) NOT NULL AUTO_INCREMENT COMMENT '唯一自增id', `pid` int(5) NOT NULL DEFAULT '0' COMMENT '父id', `sort` int(2) NOT NULL DEFAULT '0' COMMENT '排序数字', `name` varchar(30) DEFAULT NULL COMMENT '名称', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='无限极分类表' AUTO_INCREMENT=1 ;
数据
INSERT INTO `category` (`id`, `pid`, `sort`, `name`) VALUES(1, 0, 1, 'php'),(2, 0, 2, '数据库'),(3, 0, 3, 'javascript'),(4, 1, 1, '框架模板'),(5, 1, 2, '函数总结'),(6, 2, 1, 'mysql'),(7, 4, 1, '框架'),(8, 4, 2, '模板'),(9, 8, 1, 'smarty'),(10, 7, 2, 'thinkphp'),(11, 10, 1, 'thinkphp技巧'),(12, 10, 2, 'thinkphp模板'),(13, 12, 3, '模板知识总结'),(14, 12, 2, '模板视频教程'),(15, 11, 1, 'model技巧');
函数实现代码
function tree(&$list,$pid=0,$level=0,$html='--'){ static $tree=array(); foreach($list as <div style="color:transparent">本&文来源gaodai^.ma#com搞#代!码网</div><strong>搞gaodaima代码</strong>$v){ if($v['pid']==$pid){ $v['level']=$level; $v['html']=str_repeat($html,$level); $tree[]=$v; tree($list,$v['id'],$level+1,$html); } } return $tree;}
以上tree函数的第一个参数$list就是获取的如上表的一个二维数组的结果集。需要注意的是从数据库获取结果集的sql语句必须加上order by sort asc,否则sort字段将不能发挥排序的作用。