引用的妙用

前几天看ThinkPHP代码, 一不小心发现了 list_to_tree 这个函数

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

posted on 2010-01-31 13:48  李恺  阅读(161)  评论(0)    收藏  举报