久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

PHP無限極分類函數(shù)的實(shí)現(xiàn)方法詳解

這篇文章主要介紹了PHP無限極分類函數(shù)的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了php實(shí)現(xiàn)無限極分類的具體思路、實(shí)現(xiàn)代碼與相關(guān)注意事項(xiàng),需要的朋友可以參考下

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

在開發(fā)程序的時(shí)候,有時(shí)候,我們需要獲取所有欄目(包括一級(jí)欄目、二級(jí)欄目、三級(jí)欄目等等),并按照父子關(guān)系形成樹型結(jié)構(gòu)。可以采取使用遞歸或者通過引用方式(php中引用類似C或者C++中的指針,只不過換一種說法而已)。

通過引用方式實(shí)現(xiàn)無限極分類

思路:

1.即所有待處理的數(shù)據(jù)進(jìn)行包裝成下標(biāo)為主鍵id(pk)的數(shù)組,便于有pid獲取對(duì)應(yīng)的父欄目。

2.對(duì)包裝的數(shù)據(jù)進(jìn)行循環(huán),如果為根節(jié)點(diǎn),則將其引用添加到tree中,否則,將其引用添加到其父類的子元素中。這樣雖然tree中,只是添加了根節(jié)點(diǎn),但是每個(gè)根節(jié)點(diǎn)如果有子元素,其中包含了子元素的引用。故能形成樹型。

代碼如下

/**
 * 把返回的數(shù)據(jù)集轉(zhuǎn)換成Tree
 * @param array $list 要轉(zhuǎn)換的數(shù)據(jù)集
 * @param string $pk 自增字段(欄目id)
 * @param string $pid parent標(biāo)記字段
 * @return array
 * @author dqs <1696232133@qq.com>
 */
function make_tree($list,$pk='id',$pid='pid',$child='_child',$root=0){
  $tree=array();
  $packData=array();
  foreach ($list as $data) {
    $packData[$data[$pk]] = $data;
  }
  foreach ($packData as $key =>$val){
    if($val[$pid]==$root){//代表跟節(jié)點(diǎn)
      $tree[]=& $packData[$key];
    }else{
      //找到其父類
      $packData[$val[$pid]][$child][]=& $packData[$key];
    }
  }
  return $tree;
}

數(shù)據(jù)結(jié)構(gòu)如下:

PHP無限極分類函數(shù)的實(shí)現(xiàn)方法詳解

執(zhí)行結(jié)果如下

Array
(
  [0] => Array
    (
      [id] => 6
      [pid] => 0
      [title] => 測(cè)試1
      [url] => test1
      [sort] => 0
      [create_time] => 1464076199
      [update_time] => 1464076199
      [status] => 1
      [target] => 0
    )
  [1] => Array
    (
      [id] => 7
      [pid] => 0
      [title] => 測(cè)試2
      [url] => test2
      [sort] => 0
      [create_time] => 1464076218
      [update_time] => 1464076218
      [status] => 1
      [target] => 0
    )
  [2] => Array
    (
      [id] => 1
      [pid] => 0
      [title] => 首頁
      [url] => Index/index
      [sort] => 1
      [create_time] => 1379475111
      [update_time] => 1379923177
      [status] => 1
      [target] => 0
    )
  [3] => Array
    (
      [id] => 2
      [pid] => 0
      [title] => 博客
      [url] => Article/index?category=blog
      [sort] => 2
      [create_time] => 1379475131
      [update_time] => 1379483713
      [status] => 1
      [target] => 0
      [_child] => Array
        (
          [0] => Array
            (
              [id] => 4
              [pid] => 2
              [title] => 個(gè)人博客
              [url] => ownblog
              [sort] => 0
              [create_time] => 1464075558
              [update_time] => 1464075558
              [status] => 1
              [target] => 0
              [_child] => Array
                (
                  [0] => Array
                    (
                      [id] => 8
                      [pid] => 4
                      [title] => 新浪博客
                      [url] => sinaBlog
                      [sort] => 0
                      [create_time] => 1464077276
                      [update_time] => 1464077276
                      [status] => 1
                      [target] => 0
                    )
                )
            )
          [1] => Array
            (
              [id] => 5
              [pid] => 2
              [title] => 他人博客
              [url] => otherBlog
              [sort] => 0
              [create_time] => 1464075582
              [update_time] => 1464075582
              [status] => 1
              [target] => 0
            )
        )
    )
  [4] => Array
    (
      [id] => 3
      [pid] => 0
      [title] => 官網(wǎng)
      [url] => http://www.onethink.cn
      [sort] => 3
      [create_time] => 1379475154
      [update_time] => 1387163458
      [status] => 1
      [target] => 0
    )
)

附加OneThink中無限極分類函數(shù)

/**
 * 把返回的數(shù)據(jù)集轉(zhuǎn)換成Tree
 * @param array $list 要轉(zhuǎn)換的數(shù)據(jù)集
 * @param string $pid parent標(biāo)記字段
 * @param string $level level標(biāo)記字段
 * @return array
 * @author 麥當(dāng)苗兒 <zuojiazi@vip.qq.com>
 */
function list_to_tree($list, $pk='id', $pid = 'pid', $child = '_child', $root = 0) {
  // 創(chuàng)建Tree
  $tree = array();
  if(is_array($list)) {
    // 創(chuàng)建基于主鍵的數(shù)組引用
    $refer = array();
    foreach ($list as $key => $data) {
      $refer[$data[$pk]] =& $list[$key];
    }
    foreach ($list as $key => $data) {
      // 判斷是否存在parent
      $parentId = $data[$pid];
      if ($root == $parentId) {
        $tree[] =& $list[$key];
      }else{
        if (isset($refer[$parentId])) {
          $parent =& $refer[$parentId];
          $parent[$child][] =& $list[$key];
        }
      }
    }
  }
  return $tree;
}

通過遞歸方式實(shí)現(xiàn)無限極分類

思路:

1.使用循環(huán),分別獲取所有的根節(jié)點(diǎn)。

2.在獲取每個(gè)節(jié)點(diǎn)的時(shí)候,將該節(jié)點(diǎn)從原數(shù)據(jù)中移除,并遞歸方式獲取其所有的子節(jié)點(diǎn),一直原數(shù)據(jù)為空。

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了PHP定義字符串的四種方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
下面小編就為大家分享一篇php 替換文章中的圖片路徑,下載圖片到本地服務(wù)器的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP給源代碼加密的幾種方法匯總(推薦),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇php打開本地exe程序,js打開本地exe應(yīng)用程序,并傳遞相關(guān)參數(shù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP類的反射來實(shí)現(xiàn)依賴注入過程以及相關(guān)知識(shí)點(diǎn)分享,對(duì)此有興趣的朋友跟著小編學(xué)習(xí)下吧。
php遍歷一個(gè)文件夾內(nèi)的所有文件和文件夾,并刪除所有文件夾和子文件夾下的所有文件的代碼,通過遞歸方式實(shí)現(xiàn)達(dá)到清空一個(gè)目錄的效果。本文給大家分享實(shí)例代碼,需要的朋友參考
主站蜘蛛池模板: 日韩视频在线免费观看 | a级黄色片视频 | 日本久久综合 | 北条麻妃国产九九九精品小说 | 狠狠天天 | 免费v片在线观看 | 亚洲国产一区二区三区在线观看 | 91久久精品国产91久久性色tv | 欧美老少妇一级特黄一片 | 精品国产精品国产偷麻豆 | 欧美精品一区在线观看 | 在线视频中文字幕 | 日韩免费高清视频 | 久久久久久久久久性 | 亚洲三区视频 | 91av国产在线视频 | 天天干夜夜拍 | 二区三区视频 | 午夜av免费| caoporn国产| 成人欧美一区二区三区黑人孕妇 | 91久久精品 | 国产日韩亚洲欧美 | 成av人电影在线 | 97久久精品午夜一区二区 | 日韩欧美手机在线 | 欧美日韩大片 | 7799精品视频天天看 | 狠狠操操 | 日韩欧美在线视频一区 | 久久精品一区二区 | 欧美午夜在线 | 欧美黄色片 | 国产一二三区电影 | 毛片在线看片 | 婷婷精品| 国产网站在线免费观看 | 成人在线国产 | 精品国产乱码久久久久久a丨 | 欧美视频一级 | 成人国产一区二区三区精品麻豆 |