最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP實(shí)現(xiàn)無限極分類生成分類樹的方法

 更新時(shí)間:2017年09月11日 10:21:54   作者:紅塵困住年少  
這篇文章主要介紹了PHP實(shí)現(xiàn)無限極分類生成分類樹的方法,結(jié)合實(shí)例形式簡單分析了無限極分類的原理與實(shí)現(xiàn)方法,涉及PHP數(shù)組遍歷與判斷相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了PHP實(shí)現(xiàn)無限極分類生成分類樹的方法。分享給大家供大家參考,具體如下:

現(xiàn)在的分類數(shù)據(jù)庫設(shè)計(jì)基本都是:每一個(gè)分類有一個(gè)id主鍵字段,一個(gè)pid指向父類的id,這樣便可實(shí)現(xiàn)無限級(jí)分類,取出的數(shù)據(jù)就是如下的格式:

$arr = array(
  array("id" => 1 , "pid" => 0 , 'cat' => '欄目一'),
  array("id" => 2 , "pid" => 0 , 'cat' => '欄目二'),
  array("id" => 3 , "pid" => 1 , 'cat' => '欄目三'),
  array("id" => 4 , "pid" => 2 , 'cat' => '欄目四'),
  array("id" => 5 , "pid" => 1 , 'cat' => '欄目五'),
  array("id" => 6 , "pid" => 5 , 'cat' => '欄目六'),
  array("id" => 7 , "pid" => 5 , 'cat' => '欄目七'),
  array("id" => 8 , "pid" => 6 , 'cat' => '欄目八'),
  array("id" => 9 , "pid" => 1 , 'cat' => '欄目九'),
  array("id" => 10 , "pid" => 0 , 'cat' => '欄目十'),
  array("id" => 11 , "pid" => 10 , 'cat' => '欄目十一'),
  array("id" => 12 , "pid" => 11 , 'cat' => '欄目十二'),
  array("id" => 13 , "pid" => 2 , 'cat' => '欄目十三'),
  array("id" => 14, "pid" => 13 , 'cat' => '欄目十四')
);

不多說,直接上處理代碼:

//生成無限極分類樹
function make_tree($arr){
  $refer = array();
  $tree = array();
  foreach($arr as $k => $v){
    $refer[$v['id']] = & $arr[$k]; //創(chuàng)建主鍵的數(shù)組引用
  }
  foreach($arr as $k => $v){
    $pid = $v['pid'];  //獲取當(dāng)前分類的父級(jí)id
    if($pid == 0){
      $tree[] = & $arr[$k];  //頂級(jí)欄目
    }else{
      if(isset($refer[$pid])){
        $refer[$pid]['subcat'][] = & $arr[$k]; //如果存在父級(jí)欄目,則添加進(jìn)父級(jí)欄目的子欄目數(shù)組中
      }
    }
  }
  return $tree;
}

測試運(yùn)行:

$cat = make_tree($arr);
print_r($cat);

運(yùn)行結(jié)果:

Array
(
  [0] => Array
    (
      [id] => 1
      [pid] => 0
      [cat] => 欄目一
      [subcat] => Array
        (
          [0] => Array
            (
              [id] => 3
              [pid] => 1
              [cat] => 欄目三
            )
          [1] => Array
            (
              [id] => 5
              [pid] => 1
              [cat] => 欄目五
              [subcat] => Array
                (
                  [0] => Array
                    (
                      [id] => 6
                      [pid] => 5
                      [cat] => 欄目六
                      [subcat] => Array
                        (
                          [0] => Array
                            (
                              [id] => 8
                              [pid] => 6
                              [cat] => 欄目八
                            )
                        )
                    )
                  [1] => Array
                    (
                      [id] => 7
                      [pid] => 5
                      [cat] => 欄目七
                    )
                )
            )
          [2] => Array
            (
              [id] => 9
              [pid] => 1
              [cat] => 欄目九
            )
        )
    )
  [1] => Array
    (
      [id] => 2
      [pid] => 0
      [cat] => 欄目二
      [subcat] => Array
        (
          [0] => Array
            (
              [id] => 4
              [pid] => 2
              [cat] => 欄目四
            )
          [1] => Array
            (
              [id] => 13
              [pid] => 2
              [cat] => 欄目十三
              [subcat] => Array
                (
                  [0] => Array
                    (
                      [id] => 14
                      [pid] => 13
                      [cat] => 欄目十四
                    )
                )
            )
        )
    )
  [2] => Array
    (
      [id] => 10
      [pid] => 0
      [cat] => 欄目十
      [subcat] => Array
        (
          [0] => Array
            (
              [id] => 11
              [pid] => 10
              [cat] => 欄目十一
              [subcat] => Array
                (
                  [0] => Array
                    (
                      [id] => 12
                      [pid] => 11
                      [cat] => 欄目十二
                    )
                )
            )
        )
    )
)

如果大家需要這樣的組裝格式,或者需要該格式方便后續(xù)的處理,可以嘗試此方法

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《PHP常用遍歷算法與技巧總結(jié)》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • php 服務(wù)器調(diào)試 Zend Debugger 的安裝教程

    php 服務(wù)器調(diào)試 Zend Debugger 的安裝教程

    調(diào)試技術(shù)是我們編程中不可或缺的重要部分,調(diào)試器是每個(gè)IDE環(huán)境都必備的組件。既然如此,Zend Studio的集成環(huán)境擁有一個(gè)調(diào)試器也就是理所當(dāng)然的事情了,但是,該調(diào)試器在配置使用起來,其顯示出來的強(qiáng)勁功能一定會(huì)讓你驚嘆不已!
    2009-09-09
  • php實(shí)現(xiàn)cookie加密的方法

    php實(shí)現(xiàn)cookie加密的方法

    這篇文章主要介紹了php實(shí)現(xiàn)cookie加密的方法,涉及php操作cookie的加密、解密及設(shè)置等技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • PHP MySQL應(yīng)用中使用XOR運(yùn)算加密算法分享

    PHP MySQL應(yīng)用中使用XOR運(yùn)算加密算法分享

    本文將介紹一個(gè)簡單易用的加密/解密算法:使用異或(XOR)運(yùn)算。本算法原理簡單,旨在使讀者對(duì)信息的加密/解密有一個(gè)更加直觀的印象。
    2011-08-08
  • php基于curl主動(dòng)推送最新內(nèi)容給百度收錄的方法

    php基于curl主動(dòng)推送最新內(nèi)容給百度收錄的方法

    這篇文章主要介紹了php基于curl主動(dòng)推送最新內(nèi)容給百度收錄的方法,分析了百度鏈接的提交方式及curl主動(dòng)推送的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2016-10-10
  • php使用Jpgraph創(chuàng)建3D餅形圖效果示例

    php使用Jpgraph創(chuàng)建3D餅形圖效果示例

    這篇文章主要介紹了php使用Jpgraph創(chuàng)建3D餅形圖效果,結(jié)合實(shí)例形式分析了php基于Jpgraph繪制圖形的原理、實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-02-02
  • PHP獲取鏈表中倒數(shù)第K個(gè)節(jié)點(diǎn)的方法

    PHP獲取鏈表中倒數(shù)第K個(gè)節(jié)點(diǎn)的方法

    這篇文章主要介紹了PHP獲取鏈表中倒數(shù)第K個(gè)節(jié)點(diǎn)的方法,涉及php針對(duì)鏈表的遍歷、判斷等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • 一些php技巧與注意事項(xiàng)分析

    一些php技巧與注意事項(xiàng)分析

    很多人寫程序時(shí),用 header(location) 進(jìn)行跳轉(zhuǎn)往往不記得寫 exit() 語句,事實(shí)上這種做法是存在嚴(yán)重風(fēng)險(xiǎn)的。
    2011-02-02
  • php使用環(huán)形鏈表解決約瑟夫問題完整示例

    php使用環(huán)形鏈表解決約瑟夫問題完整示例

    這篇文章主要介紹了php使用環(huán)形鏈表解決約瑟夫問題,簡單描述了約瑟夫問題并結(jié)合實(shí)例形式分析了php基于環(huán)形鏈表解決約瑟夫問題的相關(guān)操作技巧,注釋中包含較為詳盡的說明便于理解,需要的朋友可以參考下
    2018-08-08
  • linux php mysql數(shù)據(jù)庫備份實(shí)現(xiàn)代碼

    linux php mysql數(shù)據(jù)庫備份實(shí)現(xiàn)代碼

    想在PHP后臺(tái)管理直接能夠備份數(shù)據(jù)庫,于是想呀想,一直沒有什么思路,一開始是考慮用php來訪問服務(wù)器安裝mysql的目錄,比如 /usr/local/mysql/data目錄,直接把下面對(duì)應(yīng)的文件進(jìn)行備份
    2009-03-03
  • 通過PHP實(shí)現(xiàn)獲取訪問用戶IP

    通過PHP實(shí)現(xiàn)獲取訪問用戶IP

    這篇文章主要介紹了通過PHP實(shí)現(xiàn)獲取訪問用戶IP,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論

石家庄市| 垣曲县| 临泽县| 吴江市| 上思县| 双城市| 重庆市| 稷山县| 上栗县| 随州市| 广昌县| 盖州市| 大同市| 孝义市| 凤冈县| 宜章县| 常山县| 麻阳| 镇安县| 广河县| 永仁县| 汕头市| 长葛市| 古田县| 永靖县| 徐汇区| 三台县| 逊克县| 屏山县| 且末县| 博兴县| 麟游县| 武宁县| 汕头市| 潮安县| 英吉沙县| 辉县市| 西青区| 通州市| 长垣县| 黄骅市|