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;
}
标签:PHP,树形,常用,key,list,pid,data,result
来源: https://www.cnblogs.com/cbywan/p/10270058.html