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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM