CateTreeModel::createTree PHP Method

createTree() private method

双数组生成整棵树,缓存操作
private createTree ( )
    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);
    }