無限分類 - 有限級控制

p_burt發表於2020-03-30

資料庫使用的mysql具體表如下

CREATE TABLE `eb_store_category` (  
    `id` mediumint(11) NOT NULL AUTO_INCREMENT COMMENT '商品分類表ID', 
    `pid` mediumint(11) NOT NULL COMMENT '父id',  
    `name` varchar(100) NOT NULL COMMENT '分類名稱',
    PRIMARY KEY (`id`),  
    KEY `pid` (`pid`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='商品分類表'

具體程式碼如下

//共用的類庫
//主要封裝了上下級關係處理
class ComUtil{
    /**
     * desc 獲取子集link map
     * @param $data array
     * @param $id int
     * @param $level int 分類級聯層級
     * @return array 
     */
    public static function getChildMap($data, $id = 0, $level=1)
    {
        $tree = [];
        if($level <= 0) { return $tree; }
        foreach($data as $nKey => $nItem){
            if($nItem['pid'] == $id){
                unset($data[$nKey]);
                $tree[] = [
                    'id' => $nItem['id'],
                    'name' => $nItem['name'],
                    'pid' => $nItem['pid'],
                    'children' => getChildMap($data, $nItem['id'], --$level),
                ];
            }
        }
        return $tree;
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章