thinkphp 的分类树转换

常用类库摘抄:thinkphp无限分类

/**
 +———————————————————-
 * 把返回的数据集转换成Tree
 +———————————————————-
 * @access public
 +———————————————————-
 * @param array $list 要转换的数据集
 * @param string $pid parent 父id字段
 * @param string $child child 子类标记
 +———————————————————-
 * @return array
 +———————————————————-
 */
function list_to_tree($list, $pk=’id’,$pid = ‘pid’,$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;
}
 

分享到QQ空间

Comments are closed.