JavaScript version:
<!DOCTYPE HTML><HTMLLang= "ZH-CN"><Head> <MetaCharSet= "Utf-8"> <title></title></Head><Body> <Scripttype= "Text/javascript"> vararr= { '1' : 0, '2' : 1, '3' : 0, '4' : 1, '5' : 2, '6' : 0, '7' : 6, '8' : 5, '9' : 8, 'Ten' : 8 }; varId,i=0; /** * tree = [{id:,pid:,level:}]*/ varTree= []; for(varKeyincharr) { if(Arr[key]==0){ //belongs to the topTree.push ({id:key,pid:arr[key],level:0}); }Else{ID=key; I= 0; while(Arr[id]) {ID=Arr[id]; I++; } tree.push ({id:key,pid:arr[key],level:i}); }} console.log (tree); </Script></Body></HTML>
PHP version
<?PHP/** * [Infiniteorder Unlimited class] * @author Enami * @date 2016-12-28 * @param [string] $list [Category List] * @param [string ] $field _pid [field name for classification] * @param [string] $pval [Top End value] * @return [array] [list after category] * @throws*/functionInfiniteorder (&$list,$field _pid= ' pid ',$pval= 0){ //for caching results $arr=Array(); foreach($list as $key=$val){ $i= 0; if($val[$field _pid] !=$pval){//does not belong to the top $id=$val[$field _pid ]; //when looping to the top end while($val[$id] !=$pval){ $id=$val[$id ]; $i++; } } $val[' _level '] =$i; $arr[] =$val; } return $arr;}
Public functiongetinfinitelist () {$arr=Array(); //Category List $list=$this-Select (); foreach($list as $k 1=$v 1){ $arr[$v 1[' ID ']] =$v 1[' PID ']; } $i= 0; foreach($arr as $k 2=$v 2){ $level= 0; $pid=$v 2[' PID ']; if($pid! = 0) {//does not belong to the top $level++; //when looping to the top end while($arr[$pid]! = 0){ $pid=$arr[$pid]; $level++; } } $list[$i[' _level '] =$level; $i++; } return $list; }
Self-made infinite classification algorithm.