php 读取树形结构的完整代码

内容摘要
这篇文章主要为大家详细介绍了php 读取树形结构的完整代码,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记。经测试代码如下:

/**
* 从
文章正文

这篇文章主要为大家详细介绍了php 读取树形结构的完整代码,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记。经测试代码如下:

/**
 *  从数组转换,操作无限分类数组.
 *  数组格式, array(array('cid', 'pid', 'val'), array('cid', 'pid', 'val'));
 *
 * @param 
 * @author php教程 www.idcnote.com
 **/
class tree_array {
 var $data = array();
 var $child = array();
 var $layer = array();
 var $parent = array();
 // $array, 被操纵的数组, $cid 分类 id 的key. $pid 父分类 id 的key. $value 数据的 key
 function tree_array($array = array(), $cid = 'cid', $pid = 'pid', $value = null) {
  if(!is_array($array)) return false;
  foreach($array as $v) {
   if(isset($v[$value])) {
    $this->setNode($v[$cid], $v[$pid], $v[$value]);
   }
   else
   {
    $this->setNode($v[$cid], $v[$pid], $v);
   }
  }
 }
 function setNode($id, $parent, $value){
  $parent = $parent ? $parent : 0;
  $this->data[$id] = $value;
  // if(!isset($this->child[$id])) $this->child[$id] = array();
  if(!isset($this->child[$parent])) $this->child[$parent] = array();
  $this->child[$parent][] = $id;
  $this->parent[$id] = $parent;
 }
 function getValue($id) {
  if(!isset($this->data[$id])) return false;
  return $this->data[$id];
 }
 function getLayer($id, $space = false) {
  if(!isset($this->parent[$id])) return false;
  $layer = count($this->getParents($id)) + 1;
  return $space ? str_repeat($space, $layer) : $layer;
 }
 function getTreeList(&$tree, $root= 0, $space=null) {
  if(!isset($this->child[$root])) return false;
  foreach($this->child[$root] as $key=>$id) {
   if($space) {
    $tree[$id] = $this->getLayer($id, $space) . $this->data[$id];
   }
   else
   {
    $tree[$id] = $this->data[$id];
   }
   if(isset($this->child[$id])) $this->getTreeList($tree, $id, $space);
  }
 }
 function getParent($id) {
  if(!isset($this->parent[$id])) return false;
  $tid = $this->parent[$id];
        if(!$tid) return 0;
  return array($tid => $this->data[$tid]);
 }
 function getParents($id) {
  if(!isset($this->parent[$id])) return false;
  $parents = array();
  while($this->parent[$id]){
   $id = $this->parent[$id];
   $parents[$id] = $this->data[$id];
  }
  return $parents;
 }
 function getChild($id) {
  if(!isset($this->child[$id])) return false;
  $array = array();
  foreach($this->child[$id] as $v) {
   $array[$v] = $this->data[$v];
  }
  return $array;
 }
 function getChilds($id = 0) {
  if(!isset($this->child[$id])) return false;
  $child = array();
  $this->getTreeList($child, $id);
  return $child;
 }
 function html_options($id = 0, $space=' ',$layer=0) {
  static $layer;
  if(!isset($this->child[$id])) return false;
  $tree = array();
  foreach($this->child[$id] as $key=>$id) {
   if($space) {
    $tree[$id] =(str_repeat($space, $layer)) . $this->data[$id];
   }
   else
   {
    $tree[$id] = $this->data[$id];
   }
   if(isset($this->child[$id])) {
    $layer++;
    $tree += $this->html_options($id, $space,$layer);
    $layer--;
   }
  }
  return $tree;
 }
}

/***   代码来自php教程(www.idcnote.com)   ***/

注:关于php 读取树形结构的完整代码的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!