1.查询的数据集 转换成树形结构
function list_go_tree($list, $pk='id',$pid = 'pid',$child = '_child',$root=0) { // 创建Tree $tree = array(); if(is_array($list)) { // 创建基于主键的数组引用 $refer = array(); foreach ($list as $key => $data) { $refer[$data[$pk]] =& $list[$key]; } foreach ($list as $key => $data) { // 判断是否存在parent $parentId = $data[$pid]; if ($root == $parentId) { $tree[] =& $list[$key]; }else{ if (isset($refer[$parentId])) { $parent =& $refer[$parentId]; $list[$key]['name']='—'.$list[$key]['name']; $parent[$child][] =& $list[$key]; } } } } return $tree;
2.把查询的结果集 下拉的方式显示
/** * 通过传入要查找的人的pid来递归查找他的下属 (新) * @param array $data 数组代替数据库中的数据 * @param integer $pid 父id * @param array &$result 结果数组,&保证变量常驻 * @param integer $deep 输出的分隔符--,无实际意义 * @return 树状结构数组 */ function getListinfo( $data, $pid=0, &$result=array(), $deep = 0 ) { $deep+=1; foreach ( $data as $key => $val ) { if ( $pid == $val['pid'] ) { $result[$key]['deptname'] = $val['deptname']; $result[$key]['deptid'] = $val['deptid']; $result[$key]['deptpid'] = $val['pid']; getListinfo( $data, $val['deptid'], $result, $deep ); } } return $result; }