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 @   怪-人  阅读(2132)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示