PHP實現多級分類產生樹的方法

來源:互聯網
上載者:User
這篇文章主要介紹了PHP實現多級分類產生樹的方法,涉及php+mysql資料庫操作及數組與字串遍曆、替換、組合等相關操作技巧,需要的朋友可以參考下

具體如下:

條件,資料庫裡分類是按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;}

以上就是本文的全部內容,希望對大家的學習有所協助。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.