zoukankan      html  css  js  c++  java
  • PHP 把返回的数据集转换成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;
    }

    //树转数组

    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;
    }
  • 相关阅读:
    单例模式的八种写法
    反射
    工厂模式
    Java内存分配、管理小结
    Java 反射(二)
    Java反射
    servlet的web-xml配置详解
    substr和substring的区别
    C/C++中extern关键字详解
    lua总则
  • 原文地址:https://www.cnblogs.com/liuxd/p/6747883.html
Copyright © 2011-2022 走看看