php两种无限分类方法实例 |
本文标签:php,无限分类方法 一、递归方法 复制代码 代码如下: $items = array( array(id=>1,pid=>0,name=>一级11), array(id=>2,pid=>0,name=>一级12), array(id=>3,pid=>1,name=>二级21), array(id=>4,pid=>3,name=>三级31), array(id=>5,pid=>1,name=>二级22), array(id=>6,pid=>3,name=>三级32), array(id=>7,pid=>6,name=>四级41), ); $i = 0; function formatTree($arr, $pid = 0){ $tree = array(); $temp = array(); global $i; if($arr){ foreach($arr as $k=>$v){ if($v[pid] == $pid){// $temp = formatTree($arr, $v[id]); $temp && $v[son] = $temp; $tree[] = $v; } } } return $tree; } print_r(formatTree($items)); 二、非递归方法 复制代码 代码如下: function genTree($items) { $tree = array(); //格式化好的树 foreach ($items as $item) if (isset($items[$item[pid]])){ $items[$item[pid]][son][] = &$items[$item[id]]; } else{ $tree[] = &$items[$item[id]]; } return $tree; } $items = array( |