时间:2021-07-01 10:21:17 帮助过:5人阅读
具体如下:
条件,数据库里分类是按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语句
- */
- function treeGet($data)
- {
- $tmptree=null;
- $tree=$data;
- return treeAddNodeToTree($tmptree,treegetbyuid($tree,0,@$field),$tree);
- }
- /**
- *插入SQL涵数
- *
- * @access public
- * @param Array $fieldResult 字段信息,支持涵数
- * @param Array $table 数据库表
- * @return SQL SQL语句
- */
- function treeAddNodeToTree($Node,$miniTree,&$source)
- {
- if(is_array($miniTree)) {
- foreach($miniTree as $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;
- }
- }
- function treegetbyuid(&$stree,$uid)
- {
- $dtree=array();
- if(is_array($stree)){
- foreach($stree as $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语句
- */
- function treeMakeDeep($deep)
- {
- $returnValue="";
- for (;$deep;$deep--)
- {
- $returnValue.="┃";
- }
- return $returnValue."┣";
- }
- function treeList($treeData,&$List)
- {
- static $deep=0;
- if(is_array($treeData))
- {
- foreach($treeData as $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);
- }
- }
- }
- function treeSelect($tree,$id,$options="child")
- {
- switch(strtolower($options))
- {
- case"child":
- $tmpTree=array();
- $deep=-1;
- foreach($tree as $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($tree as $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;
- }
以上就是本文的全部内容,希望对大家的学习有所帮助。
相关推荐:
大量多级分类数据的获取、缓存、搜索查询 怎么设计最快 ?
sql 多级分类的级联查询
SQL处理多级分类,查询结果呈树形结构
以上就是PHP实现多级分类生成树的方法的详细内容,更多请关注Gxl网其它相关文章!