首页 > 开发 > PHP > 正文

PHP实现多级分类生成树的方法示例

2024-05-04 22:49:29
字体:
来源:转载
供稿:网友

本文实例讲述了PHP实现多级分类生成树的方法。分享给大家供大家参考,具体如下:

条件,数据库里分类是按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;}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表