国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

CMSPRESS 10行代碼搞定 PHP無限級分類2

2024-05-05 00:03:00
字體:
供稿:網(wǎng)友

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

核心代碼如下

class Tool {  static public $treeList = array(); //存放無限分類結(jié)果如果一頁面有多個無限分類可以使用 Tool::$treeList = array(); 清空  /**   * 無限級分類   * @access public    * @param Array $data   //數(shù)據(jù)庫里獲取的結(jié)果集    * @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[] 保存排序的結(jié)果 基本就是進(jìn)行了一次排序 保存后就可以 unset($data[$key]); 掉 因?yàn)橐呀?jīng)使用不到了
&$data 使用按地址傳參,結(jié)合unset($data[$key]); 減少循環(huán)次數(shù),這樣效率提高了好幾倍,

但需要對 Pid進(jìn)行 ASC的排序 不然會顯示不完全

$value['Count'] = $count; 為當(dāng)前的等級 在模板里會通過等級進(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)的字段 修改成如上

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

如果哪位大哥測試了 麻煩把測試結(jié)果回復(fù)下哈


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 综艺| 靖边县| 美姑县| 永城市| 兴山县| 斗六市| 贵溪市| 长海县| 垣曲县| 凉山| 天峻县| 新绛县| 成安县| 茶陵县| 外汇| 龙里县| 平塘县| 习水县| 宁波市| 莱芜市| 海阳市| 治多县| 赤水市| 新昌县| 安康市| 启东市| 凤凰县| 新宁县| 石景山区| 陈巴尔虎旗| 东安县| 融水| 奉化市| 牟定县| 密云县| 迁安市| 浪卡子县| 新乡市| 大方县| 科技| 桐梓县|