CMSPRESS 10行代碼搞定 PHP無限級(jí)分類2
超級(jí)無限分類 使用簡(jiǎn)單 效率極高 核心代碼10行不到
另外 求這個(gè)分類的不足,和更高效簡(jiǎn)單的無限分類方法 ^_^
核心代碼如下
class Tool {
static public $treeList = array(); //存放無限分類結(jié)果如果一頁(yè)面有多個(gè)無限分類可以使用 Tool::$treeList = array(); 清空
/**
* 無限級(jí)分類
* @access public
* @param Array $data //數(shù)據(jù)庫(kù)里獲取的結(jié)果集
* @param Int $pid
* @param Int $count //第幾級(jí)分類
* @return Array $treeList
*/
static public function tree(&$data,$pid = 0,$count = 1) {
foreach ($data as $key => $value){
if($value['Pid']==$pid){
$value['Count'] = $count;
self::$treeList []=$value;
unset($data[$key]);
self::tree($data,$value['Id'],$count+1);
}
}
return self::$treeList ;
}
}
$treeList[] 保存排序的結(jié)果 基本就是進(jìn)行了一次排序 保存后就可以 unset($data[$key]); 掉 因?yàn)橐呀?jīng)使用不到了
&$data 使用按地址傳參,結(jié)合unset($data[$key]); 減少循環(huán)次數(shù),這樣效率提高了好幾倍,
但需要對(duì) Pid進(jìn)行 ASC的排序 不然會(huì)顯示不完全
$value['Count'] = $count; 為當(dāng)前的等級(jí) 在模板里會(huì)通過等級(jí)進(jìn)行生成樹形結(jié)構(gòu)
排序前后的數(shù)據(jù)結(jié)構(gòu)如下
表所需要字段 Id,Pid
排序前的數(shù)據(jù)結(jié)構(gòu)
id pid
1 0
2 0
3 1
4 3
排序后的數(shù)據(jù)結(jié)構(gòu)
id pid count
1 0 1
3 1 2
4 3 3
2 0 1
//默認(rèn)列表
public function index() {
$menu = M('Menu');
$list = $menu->order('Pid ASC,Morder DESC,Id ASC')->select();
$this->assign('List',Tool::tree($list));
$this->display();
}
控制器里調(diào)用
<td style="text-indent:<{$vo['Count']*20}>px;"><neq name="vo.Count" value="1">| -- </neq><{$vo.Name}></td>
模板使用里<volist> 正常輸出即可 把需要生成樹結(jié)構(gòu)的字段 修改成如上
測(cè)試了 如果是3000條的話 用時(shí) 0.5秒 1000個(gè)的話 0.02秒的左右 超過3000效率就會(huì)大幅度降低 2000左右的效率還是比較高的 沒有進(jìn)行更詳細(xì)的測(cè)試
如果哪位大哥測(cè)試了 麻煩把測(cè)試結(jié)果回復(fù)下哈
相關(guān)文章
PHP獲取當(dāng)前系統(tǒng)時(shí)間的方法小結(jié)
這篇文章主要介紹了PHP獲取當(dāng)前系統(tǒng)時(shí)間的方法小結(jié),需要的朋友可以參考下2018-10-10
利用PHP擴(kuò)展Xhprof分析項(xiàng)目性能實(shí)踐教程
XHProf是Facebook開發(fā)的性能調(diào)試工具,能幫助直觀的統(tǒng)計(jì)顯示PHP程序執(zhí)行中各方法函數(shù)調(diào)用次數(shù)和消耗時(shí)間,以方便我們排查性能瓶頸并進(jìn)行調(diào)優(yōu)。下面這篇文章主要給大家介紹了關(guān)于利用PHP擴(kuò)展Xhprof分析項(xiàng)目性能實(shí)踐的相關(guān)資料,需要的朋友可以參考下2018-09-09
php+html5使用FormData對(duì)象提交表單及上傳圖片的方法
這篇文章主要介紹了php+html5使用FormData對(duì)象提交表單及上傳圖片的方法,實(shí)例分析了FormData對(duì)象的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02
PHP字符串和十六進(jìn)制如何實(shí)現(xiàn)互相轉(zhuǎn)換
這篇文章主要介紹了PHP字符串和十六進(jìn)制如何實(shí)現(xiàn)互相轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07

