private function createTree()
{
// 从数据库取树的数据
$data = $this->_getTreeData();
if (empty($data)) {
return array();
}
$tree = array();
// 临时树
$child = array();
// 所有节点的子节点
$hash = array();
// Hash缓存数组
foreach ($data as $dv) {
$hash[$dv[$this->defaultField['id']]] = $dv;
$tree[$dv[$this->defaultField['id']]] = $dv;
!isset($child[$dv[$this->defaultField['id']]]) && ($child[$dv[$this->defaultField['id']]] = array());
$tree[$dv[$this->defaultField['id']]]['_child'] =& $child[$dv[$this->defaultField['id']]];
$child[$dv[$this->defaultField['pid']]][] =& $tree[$dv[$this->defaultField['id']]];
}
//整个树,其根节点ID为0
$tree[0]['_child'] = $child[0];
self::$tree[$this->cacheKey] = $tree;
self::$hash[$this->cacheKey] = $hash;
// 生成缓存
model('Cache')->set($this->cacheKey, $tree);
model('Cache')->set($this->cacheKey . '_hash', $hash);
}