PHP 把返回的数据集转换成Tree树

数组转tree

/** 
* 把返回的数据集转换成Tree 
* @access public 
* @param array $list 要转换的数据集 
* @param string $pid parent标记字段 
* @param string $level level标记字段 
* @return array 
*/ 
public static function list_to_tree($list, $pk='cat_id',$pid = 'parent_id',$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];
          $parent[$child][] =& $list[$key];
        }
      }
    }
  }
  return $tree;
}

 

tree转数组

 

function treeToList($tree,&$result=array()){

    foreach($tree as $k=>$v){
        $result[$v['company_branch_id']]=$v;
        if (isset($v['_child'])) {
            treeToList($v['_child'],$result);
        }
    }

    $result = array_map(function($item){
        unset($item['_child']);
        return  $item;
    },$result);
    return $result;
}

 

posted @ 2017-04-22 14:57  怪-人  阅读(2124)  评论(0编辑  收藏  举报