PHP实现多级分类生成树的方法示例
发布:smiling 来源: PHP粉丝网 添加日期:2018-07-31 11:28:41 浏览: 评论:0
条件,数据库里分类是按id,fid(父ID)实现多级分类的!
使用方法:
- $sql="XXXXXXXXXX"; //sql语句
- $res=$db->Select($sql); //执行sql
- $list=array();
- treeList(treeGet($res),$list); /生成树
- print_r($res); //打印出来看看!
使用结果:
┣推荐新闻啊
┃┣国际新闻
┃┣dfffffg
┃┣ttttttt
┃┃┗yyyyy
代码如下:
- /**
- * 选择SQL涵数
- *
- * @access public
- * @param Array $field 字段信息,支持涵数
- * @param Array $table 数据库表
- * @param Array $where 条件
- * @return SQL SQL语句
- */
- functiontreeGet($data)
- {
- $tmptree=null;
- $tree=$data;
- returntreeAddNodeToTree($tmptree,treegetbyuid($tree,0,@$field),$tree);
- }
- /**
- *插入SQL涵数
- *
- * @access public
- * @param Array $fieldResult 字段信息,支持涵数
- * @param Array $table 数据库表
- * @return SQL SQL语句
- */
- functiontreeAddNodeToTree($Node,$miniTree,&$source)
- {
- if(is_array($miniTree)) {
- <a href="/tags.php/foreach/" target="_blank">foreach</a>($miniTreeas$k=>$v)
- {
- if(!count($miniTree[$k]['child']=treeAddNodeToTree($miniTree[$k],treegetbyuid($source,@$v['id']),$source)))
- {
- unset($miniTree[$k]['child']);
- $miniTree[$k]['leaf']=true;//设置叶结点
- }
- }
- return$Node['child']=$miniTree;
- }
- }
- functiontreegetbyuid(&$stree,$uid)
- {
- $dtree=array();
- if(is_array($stree)){
- foreach($streeas$k=>$v)
- {
- if($v['fid']==$uid)
- {
- $mytmp=array();
- $mytmp=$v;
- unset($stree[$k]);
- array_push($dtree,$mytmp);
- $mytmp=null;
- }
- }
- }
- return$dtree;
- }
- /**
- *更新SQL涵数
- *
- * @access public
- * @param Array $fieldResult 字段信息,支持涵数
- * @param Array $table 数据库表
- * @param Array $where 条件
- * @return SQL SQL语句
- */
- functiontreeMakeDeep($deep)
- {
- $returnValue="";
- for(;$deep;$deep--)
- {
- $returnValue.="┃";
- }
- return$returnValue."┣";
- }
- functiontreeList($treeData,&$List)
- {
- static$deep=0;
- if(is_array($treeData))
- {
- foreach($treeDataas$k=>$v)
- {
- $v['deepValue']=treeMakeDeep($deep);
- $v['deep']=$deep;
- $t=$v;
- unset($t['child']);
- array_push($List,$t);
- if($v['child'])
- {
- ++$deep;
- $optionsNode.=treeList($v['child'],$List);
- $deep--;
- }
- }
- if($lastV=array_pop($List))
- {
- $lastV['deepValue']=str_replace('┣','┗',$lastV['deepValue']);
- array_push($List,$lastV);
- }
- }
- }
- functiontreeSelect($tree,$id,$options="child")
- {
- switch(strtolower($options))
- {
- case"child":
- $tmpTree=array();
- $deep=-1;
- foreach($treeas$k=>$v)
- {
- if($id==$v['id'])
- {
- array_push($tmpTree,$v);
- $deep=$v['deep'];
- }elseif($deep!=-1)
- {
- if($v['deep']<=$deep)
- {
- break;
- }else
- {
- array_push($tmpTree,$v);
- }
- }
- }
- break;
- case"remove":
- default:
- $tmpTree=array();
- $deep=-1;
- foreach($treeas$k=>$v)
- {
- if($id==$v['id'])
- {
- $deep=$v['deep'];
- continue;
- }elseif($deep!=-1)
- {
- if($v['deep']<=$deep)
- {
- array_push($tmpTree,$v);
- $deep=-1;
- }
- continue;
- }
- array_push($tmpTree,$v);
- }
- }
- return$tmpTree;
- }
Tags: 示例 方法
相关文章
- ·php使用ajax示例(2013-12-09)
- ·PHP自动捕捉页面500错误示例(2014-01-19)
- ·PHP验证码实现代码简单示例(2014-08-22)
- ·php验证码程序代码(2014-08-22)
- ·一个完整php验证码实例程序(2014-08-25)
- ·PHP计算身份证校验码示例(2018-05-31)
- ·php利用云片网实现短信验证码功能的示例代码(2018-06-06)
- ·PHP基于双向链表与排序操作实现的会员排名功能示例(2018-06-06)
- ·原生JS实现Ajax通过GET方式与PHP进行交互操作示例(2018-06-11)
- ·php获取客户端IP及URL的方法示例(2018-07-26)
- ·php基于dom实现的图书xml格式数据示例(2018-07-26)
- ·PHP基于DOM创建xml文档的方法示例(2018-07-31)
- ·PHP使用DOM和simplexml读取xml文档的方法示例(2018-07-31)
- ·php制作基于xml的RSS订阅源功能示例(2018-07-31)
- ·php实现文件与16进制相互转换的方法示例(2018-08-02)
- ·yii2简单使用less代替css示例(2018-08-06)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)