This article mainly introduces the method of implementing multi-level classification spanning tree in PHP, involving PHP mysql database operations and array and string traversal, replacement, combination and other related operation skills. Friends in need can refer to the following
The details are as follows:
Conditions, the classification in the database is based on id, fid (parent ID) to achieve multi-level classification!
Usage method:
$sql ="XXXXXXXXXX"; //sql语句 $res = $db->Select($sql); //执行sql $list=array(); treeList(treeGet($res),$list); /生成树 print_r($res); //打印出来看看!
Usage result:
┣推荐新闻啊 ┃┣国际新闻 ┃┣dfffffg ┃┣ttttttt ┃┃┗yyyyy
The code is as follows:
/** * 选择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; }
The above is the entire content of this article, I hope it will be helpful to everyone's study.
Related recommendations:
sql Cascade query of multi-level classification
SQL processingMultiple Level classification, the query results are in a tree structure
##
The above is the detailed content of How to implement multi-level classification spanning tree in PHP. For more information, please follow other related articles on the PHP Chinese website!