PHP 开发过程中 常用的树形结构

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;
}

  

猜你喜欢

转载自www.cnblogs.com/cbywan/p/10270058.html