CMSPRESS實現無限級分類(附代碼)

php中世界最好的语言
發布: 2023-03-26 09:48:02
原創
1576 人瀏覽過

這次為大家帶來CMSPRESS實現無限級分類(附代碼),CMSPRESS實現無限級分類的注意事項有哪些,下面就是實戰案例,一起來看一下。

超級無限分類使用簡單效率極高核心程式碼10行不到
另外求這個分類的不足,和更有效率簡單的無限分類方法^_^

#核心程式碼如下

class Tool { static public $treeList = array(); //存放无限分类结果如果一页面有多个无限分类可以使用 Tool::$treeList = array(); 清空 /** * 无限级分类 * @access public * @param Array $data //数据库里获取的结果集 * @param Int $pid * @param Int $count //第几级分类 * @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[] 儲存排序的結果基本上就是進行了一次排序保存後就可以unset($data[$key]); 掉因為已經使用不到了
&$data 使用按地址傳參,結合unset($data[$key]); 減少循環次數,這樣效率提高了好幾倍,

但需要對Pid進行ASC的排序不然會顯示不完全

$value['Count'] = $count; 為目前的等級在範本裡會透過等級進行產生樹狀結構

排序前後的資料結構如下

表格所需要欄位Id,Pid
排序前的資料結構
id   pid
1    0
2    0
3    1
4    0

3    1

#4     3##排序後的資料結構


id  pid  count
1   0    1
3   1   2
4    3   1   2

4    3  

控制器裡呼叫

//默认列表 public function index() { $menu = M('Menu'); $list = $menu->order('Pid ASC,Morder DESC,Id ASC')->select(); $this->assign('List',Tool::tree($list)); $this->display(); }
登入後複製

範本使用裡 正常輸出即可把需要產生樹結構的欄位修改成如上

測試如果是3000條的話用時0.5秒1000個的話0.02秒的左右超過3000效率就會大幅度降低2000左右的效率還是比較高的沒有進行更詳細的測試

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

PHP延遲靜態綁定使用詳解

#thinkPHP框架自動填入原理與用法使用詳解

以上是CMSPRESS實現無限級分類(附代碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!