一个无限级分类

 1 /**
 2  * 把返回的数据集转换成Tree
 3  * @param array $list 要转换的数据集
 4  * @param string $pid parent标记字段
 5  * @param string $level level标记字段
 6  * @return array
 7  */
 8 function list_to_tree($list, $pk='id', $pid = 'pid', $child = '_child', $root = 0)
 9 {
10     // 创建Tree
11     $tree = array();
12     if(is_array($list)) {
13         // 创建基于主键的数组引用
14         $refer = array();
15         foreach ($list as $key => $data) {
16             $refer[$data[$pk]] =& $list[$key];
17         }
18         foreach ($list as $key => $data) {
19             // 判断是否存在parent
20             $parentId =  $data[$pid];
21             if ($root == $parentId) {
22                 $tree[] =& $list[$key];
23             }else{
24                 if (isset($refer[$parentId])) {
25                     $parent =& $refer[$parentId];
26                     $parent[$child][] =& $list[$key];
27                 }
28             }
29         }
30     }
31     return $tree;
32 }

很不错!性能应该很高

posted @ 2014-05-22 21:39  笨马儿  阅读(158)  评论(0编辑  收藏  举报