<?php
/**
* 从数组生成树形结构
* 可指定自身主键key,父级关联key,层级key,更加灵活。
*/
class tree {
public $key;//主键id
public $pkey;//父级id
public $lvkey;//系统自动添加的,代表层级的数组key
public $list;//原始数组,二维
public $tree;//树形数组
function __construct($list,$key='id',$pkey='pid',$lvkey='lv'){
$this->list=!empty($list)?$list:array();
$this->key=$key;
$this->pkey=$pkey;
$this->lvkey=$lvkey;
$this->tree=array();
$this->GetTree();
}
/**
* 将原始数组按树型结构排序
* @staticvar int $lv 这是一个用于记录当前单元所处层级的静态变量,顶层单元从1开始
* @param type $pid 指定从哪个父级id开始
* @return bool
*/
function GetTree($pid=0){
if(empty($this->list)){
return "";
}
static $lv=0;
$lv++;
foreach($this->list as $k=>$v){
if(!isset($v[$this->key]) || !isset($v[$this->pkey])){
continue;
}
if($v[$this->pkey]==$pid){
$v[$this->lvkey]=$lv;
$this->tree[$v[$this->key]]=$v;
$this->GetTree($v[$this->key]);
}
}
$lv--;
return true;
}
}
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。