午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > PHP實現無限極分類的兩種方式示例【遞歸和引用方式】

PHP實現無限極分類的兩種方式示例【遞歸和引用方式】

熱門標簽:抖音有個地圖標注是什么意思 九江外呼系統 地下城堡2圖九地圖標注 西區企業怎么做地圖標注入駐 阿里云400電話申請加工單 七魚外呼系統停用嗎 保定crm外呼系統運營商 智能電話機器人排名前十名南京 海南人工外呼系統有效果嗎

本文實例講述了PHP實現無限極分類的兩種方式。分享給大家供大家參考,具體如下:
面試的時候被問到無限極分類的設計和實現,比較常見的做法是在建表的時候,增加一個PID字段用來區別自己所屬的分類

$array = array(
array('id' => 1, 'pid' => 0, 'name' => '河北省'),
array('id' => 2, 'pid' => 0, 'name' => '北京市'),
array('id' => 3, 'pid' => 1, 'name' => '邯鄲市'),
array('id' => 4, 'pid' => 2, 'name' => '朝陽區'),
array('id' => 5, 'pid' => 2, 'name' => '通州區'),
array('id' => 6, 'pid' => 4, 'name' => '望京'),
array('id' => 7, 'pid' => 4, 'name' => '酒仙橋'),
array('id' => 8, 'pid' => 3, 'name' => '永年區'),
array('id' => 9, 'pid' => 1, 'name' => '武安市'),
);

數據在數據庫中存儲大概是這個樣子,怎么實現無限極遞歸呢,有兩種常用的做法,遞歸和引用算法

遞歸算法

/**
* 遞歸實現無限極分類
* @param $array 分類數據
* @param $pid 父ID
* @param $level 分類級別
* @return $list 分好類的數組 直接遍歷即可 $level可以用來遍歷縮進
*/
function getTree($array, $pid =0, $level = 0){
    //聲明靜態數組,避免遞歸調用時,多次聲明導致數組覆蓋
    static $list = [];
    foreach ($array as $key => $value){
      //第一次遍歷,找到父節點為根節點的節點 也就是pid=0的節點
      if ($value['pid'] == $pid){
        //父節點為根節點的節點,級別為0,也就是第一級
        $value['level'] = $level;
        //把數組放到list中
        $list[] = $value;
        //把這個節點從數組中移除,減少后續遞歸消耗
        unset($array[$key]);
        //開始遞歸,查找父ID為該節點ID的節點,級別則為原級別+1
        getTree($array, $value['id'], $level+1);
      }
    }
    return $list;
}
/*
* 獲得遞歸完的數據,遍歷生成分類
*/
$array = getTree($array);
foreach($array) as $value{
    echo str_repeat('--', $value['level']), $value['name'].'br />';
}

輸出結果 無限極分類實現ok

河北省
--邯鄲市
----永年區
--武安市
北京市
--朝陽區
----望京
----酒仙橋
--通州區

引用算法

function generateTree($array){
  //第一步 構造數據
  $items = array();
  foreach($array as $value){
    $items[$value['id']] = $value;
  }
  //第二部 遍歷數據 生成樹狀結構
  $tree = array();
  foreach($items as $key => $value){
    if(isset($items[$item['pid']])){
      $items[$item['pid']]['son'][] = $items[$key];
    }else{
      $tree[] = $items[$key];
    }
  }
  return $tree;
}
//經過第一步 數據變成了這樣
Array
(
  [1] => Array
    (
      [id] => 1
      [pid] => 0
      [name] => 河北省
      [children] => Array
        (
        )
    )
  [2] => Array
    (
      [id] => 2
      [pid] => 0
      [name] => 北京市
      [children] => Array
        (
        )
    )
  [3] => Array
    (
      [id] => 3
      [pid] => 1
      [name] => 邯鄲市
      [children] => Array
        (
        )
    )
  [4] => Array
    (
      [id] => 4
      [pid] => 2
      [name] => 朝陽區
      [children] => Array
        (
        )
    )
  [5] => Array
    (
      [id] => 5
      [pid] => 2
      [name] => 通州區
      [children] => Array
        (
        )
    )
  [6] => Array
    (
      [id] => 6
      [pid] => 4
      [name] => 望京
      [children] => Array
        (
        )
    )
  [7] => Array
    (
      [id] => 7
      [pid] => 4
      [name] => 酒仙橋
      [children] => Array
        (
        )
    )
  [8] => Array
    (
      [id] => 8
      [pid] => 3
      [name] => 永年區
      [children] => Array
        (
        )
    )
  [9] => Array
    (
      [id] => 9
      [pid] => 1
      [name] => 武安市
      [children] => Array
        (
        )
    )
)
//第一步很容易就能看懂,就是構造數據,現在咱們仔細說一下第二步
 $tree = array();
 //遍歷構造的數據
  foreach($items as $key => $value){
  //如果pid這個節點存在
    if(isset($items[$value['pid']])){
      //把當前的$value放到pid節點的son中 注意 這里傳遞的是引用 為什么呢?
      $items[$value['pid']]['son'][] = $items[$key];
    }else{
      $tree[] = $items[$key];
    }
  }
//這個方法的核心在于引用,php變量默認的傳值方式是按指傳遞
//也就是說 假如說 遍歷順序是 河北省 邯鄲市 當遍歷到河北省時 會把河北省放到tree中 遍歷到邯鄲市時 會把邯鄲市放到河北省的子節點數組中 但是!!! 這會兒的tree數組中 河北省已經放進去了 根據php變量按值傳遞的規則 你并沒有更改tree數組中的河北省的數據 所以這里用到了引用傳遞
//當你對河北省做更改時,tree數組中的河北省也一并做了更改 下面我們做個實驗 我們把引用傳遞去掉,看一下結果
//使用普通傳值輸出結果
 Array
(
  [0] => Array
    (
      [id] => 1
      [pid] => 0
      [name] => 河北省
    )
  [1] => Array
    (
      [id] => 2
      [pid] => 0
      [name] => 北京市
    )
)
//可以看到 只有河北省和北京市輸出出來了 因為他們倆是第一級節點 而且排行1和2,放到$tree數組中之后,沒有使用引用傳遞,那么后續對他倆的子節點的操作都沒有在$tree中生效,現在我們更改一下順序 把邯鄲市放到河北省的前面 那么根據咱們的推斷 那么邯鄲市就應該出現在tree數組里
//邯鄲市放到河北省前面的輸出結果
Array
(
  [0] => Array
    (
      [id] => 1
      [pid] => 0
      [name] => 河北省
      [son] => Array
        (
          [0] => Array
            (
              [id] => 3
              [pid] => 1
              [name] => 邯鄲市
            )
        )
    )
  [1] => Array
    (
      [id] => 2
      [pid] => 0
      [name] => 北京市
    )
)
//果然是這樣 那么證明我們的推斷是正確的 現在我們把引用傳值改回去 再看一下
//使用引用傳值輸出結果
Array
(
  [1] => Array
    (
      [id] => 1
      [pid] => 0
      [name] => 河北省
      [children] => Array
        (
          [0] => Array
            (
              [id] => 3
              [pid] => 1
              [name] => 邯鄲市
              [children] => Array
                (
                  [0] => Array
                    (
                      [id] => 8
                      [pid] => 3
                      [name] => 永年區
                    )
                )
            )
          [1] => Array
            (
              [id] => 9
              [pid] => 1
              [name] => 武安市
            )
        )
    )
  [2] => Array
    (
      [id] => 2
      [pid] => 0
      [name] => 北京市
      [children] => Array
        (
          [0] => Array
            (
              [id] => 4
              [pid] => 2
              [name] => 朝陽區
              [children] => Array
                (
                  [0] => Array
                    (
                      [id] => 6
                      [pid] => 4
                      [name] => 望京
                    )
                  [1] => Array
                    (
                      [id] => 7
                      [pid] => 4
                      [name] => 酒仙橋
                    )
                )
            )
          [1] => Array
            (
              [id] => 5
              [pid] => 2
              [name] => 通州區
            )
        )
    )
)
//樹狀結構完美的輸出出來了 這個方法的核心就是引用傳值

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數據結構與算法教程》、《php程序設計算法總結》、《php字符串(string)用法總結》、《PHP數組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結》及《PHP數學運算技巧總結》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP 引用的概念
  • 詳解PHP的引用計數
  • php的對象傳值與引用傳值代碼實例講解
  • php傳值和傳引用的區別點總結
  • php 多個變量指向同一個引用($b = &$a)用法分析
  • php引用和拷貝的區別知識點總結
  • php中對象引用和復制實例分析
  • PHP中引用類型和值類型功能與用法示例
  • PHP 弱引用的相關總結

標簽:涼山 十堰 韶關 九江 梅河口 甘肅 昭通 遼陽

巨人網絡通訊聲明:本文標題《PHP實現無限極分類的兩種方式示例【遞歸和引用方式】》,本文關鍵詞  PHP,實現,無限,極,分類,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP實現無限極分類的兩種方式示例【遞歸和引用方式】》相關的同類信息!
  • 本頁收集關于PHP實現無限極分類的兩種方式示例【遞歸和引用方式】的相關信息資訊供網民參考!
  • 推薦文章
    日韩一级大片在线| 性生交免费视频| 久久综合婷婷| 国产超碰在线一区| 国产精品久久久一区麻豆最新章节| 亚洲一区在线观看免费观看电影高清| 欧美肥婆姓交大片| 久久99亚洲热视| 国产精品美女诱惑| 一级黄色av片| 国产剧情在线观看一区二区| 亚洲卡通动漫在线| 午夜剧场成人观在线视频免费观看| 国语自产精品视频在线看一大j8| 一本久道中文无码字幕av| 人人妻人人澡人人爽精品欧美一区| 日本一区二区精品视频| 一区二区三区精品国产| 91网站在线观看免费| 91制片厂免费观看| 久久久久久久午夜| 欧美 日韩 国产一区| 欧美视频国产视频| 手机在线播放av| 欧美人与禽zoz0善交| 久久精品女人毛片国产| 国产免费叼嘿网站免费| 国产精品香蕉一区二区三区| 亚洲丝袜精品丝袜在线| 欧美成人福利视频| 欧美不卡视频一区发布| 国产日韩欧美精品在线| 91美女片黄在线| 日韩免费看网站| 曰本色欧美视频在线| 久久免费在线观看| 国产综合18久久久久久| 蜜臀av.com| 伊人五月天婷婷| 国语对白一区二区| 爽好久久久欧美精品| 久久你懂得1024| 91精品国产色综合久久ai换脸| 久青草国产97香蕉在线视频| 国产精品国产一区二区| av免费中文字幕| 老妇女50岁三级| 五月婷婷伊人网| 亚洲一区在线看| 日韩一区二区在线视频| 国产在线观看一区二区三区 | 日韩女优制服丝袜电影| 精品国产sm最大网站免费看| 国产精品日韩电影| 欧美激情视频免费看| 东方伊人免费在线观看| 亚洲精品无遮挡| 亚洲成人av中文| 久久夜色撩人精品| 免费成人进口网站| 日本熟妇一区二区| 51精品国产人成在线观看| 久久久久久有精品国产| 色噜噜狠狠色综合网图区| 亚洲国产天堂久久综合网| 91国产丝袜在线播放| 国产成人精品电影久久久| 久久国产精品网| 99久热在线精品996热是什么| 国产精品一区免费在线观看| 欧美日韩一区不卡| 青青a在线精品免费观看| 亚洲国产精品成人天堂| 欧美极品aaaaabbbbb| 六月丁香婷婷色狠狠久久| 欧美日韩亚洲系列| 亚洲天堂av在线免费| 97人人模人人爽人人喊中文字| 国产免费观看久久黄| 欧美牲交a欧美牲交aⅴ免费真| 好吊操这里只有精品| 在线免费观看黄色小视频| 国产少妇在线观看| 国产剧情一区二区三区| 日韩一级片网站| 999视频在线观看| 精品国产av色一区二区深夜久久| 视频一区二区免费| 欧美日韩中文一区| 亚洲最大福利网| 高清中文字幕mv的电影| 三级成人在线视频| 日韩一级完整毛片| 精品国产乱码久久久久软件| 国产精品视频在| 国产自产2019最新不卡| 日韩一区二区三区视频在线观看 | 韩国中文字幕av| 草视频在线观看| 亚洲综合成人在线视频| 欧美成人福利视频| 青青草97国产精品免费观看无弹窗版| 日本在线观看视频一区| 欧美极品少妇xxxxⅹ裸体艺术| 2021国产精品久久精品| 91插插插影院| 一区国产精品视频| 亚洲永久精品一区| 狼狼综合久久久久综合网| 国产视频一区二区在线观看| 精产国品一区二区三区| 天天色天天操综合| 久久免费精品国产| 久久99精品久久久久久噜噜 | 久久久久成人精品免费播放动漫| 亚洲色大成网站www久久九九| 男人操女人动态图| 欧美精品一级二级三级| 亚洲色图27p| 国产成人精品优优av| 成人视屏免费看| 日本不卡一区二区三区在线观看| 777色狠狠一区二区三区| 欧美超碰在线观看| 国产成人精品在线观看| 精品一二三四在线| 天天干天天操天天玩| 日韩精品极品在线观看| 国产又大又黑又粗免费视频| 国产精品高潮视频| 亚洲男帅同性gay1069| www.黄色av| 国产不卡的av| 一区二区成人在线| 国产成人无码一区二区三区在线| 欧美视频小说| 国产一区二区在线观看视频| 亚洲一区二区在线视频观看| 久久精品视频va| 91亚洲国产成人精品一区二三 | 999久久久精品视频| 农村寡妇一区二区三区| 日韩亚洲欧美中文高清在线| 亚洲福利电影网| 黄色片视频免费| 欧美日韩亚洲免费| 欧美视频一二三| 精品无码久久久久久久久| 91精品国产自产在线观看永久| 亚洲一区av在线| 欧美男人亚洲天堂| 亚州av一区二区| 午夜在线观看视频18| 欧美日韩在线精品| 自拍偷拍欧美激情| 国产性生活视频| 亚洲三区在线| 亚洲午夜久久久久久久久久久| 黄色大全在线观看| 青青青青草视频| 国产精品黄视频| 一区二区三区视频免费在线观看| 婷婷综合另类小说色区| 国产精品中文字幕日韩精品 | 26uuu另类欧美亚洲曰本| 香蕉视频黄色在线观看| 国产精品美乳一区二区免费| 波多野结衣中文一区| 亚洲精品第二页| 国产精品女主播视频| 欧美日韩裸体免费视频| 欧美成人久久久免费播放| 久久久精品中文字幕| 久久亚洲风情| 欧洲精品在线播放| 欧美日韩一级视频| 精品一区二区三区在线视频| аⅴ天堂中文在线网| av观看久久| 日韩欧美电影一二三| 九九九久久久精品| 日韩成人一区二区三区| 欧美在线a视频| 色视频一区二区三区| 欧美日本黄视频| 亚洲一区在线视频观看| 国产一卡二卡在线| 视频一区三区| 亚洲人成网站999久久久综合| 国产又粗又猛又黄又爽| 真实乱偷全部视频| 国产亚洲免费的视频看| www黄色网址| 国产成人精品综合| 中文无码精品一区二区三区| 免费看涩涩视频| 91在线精品观看| 精品毛片乱码1区2区3区| 久久精品国产成人一区二区三区| 中文字幕电影av| 亚洲精品乱码久久久久久自慰| 欧美精品二区三区四区免费看视频 | 久久久91精品国产一区二区三区| 日本在线免费观看| 国产免费成人在线| 92裸体在线视频网站| 色噜噜狠狠成人中文综合| 中文字幕 国产精品| 国产性生活免费视频| 一本色道久久88亚洲综合88| 精品亚洲免费视频| 国产无遮挡又黄又爽| 九九精品久久久| 国产区一区二区三区| 精品91自产拍在线观看一区| 国产精品精品国产色婷婷| 亚洲AV无码国产精品午夜字幕| www欧美com| 久久精品亚洲天堂| 国产精品永久入口久久久| 色婷婷亚洲精品| 成人精品亚洲人成在线| 乱子伦一区二区三区| 黄色免费视频大全| 久久久久国产视频| 五月综合激情婷婷六月色窝| 久久久久久久电影| 韩国一区二区视频| 亚洲免费观看高清完整版在线观看熊| 99九九99九九九99九他书对| 日韩中文字幕免费在线| 精品国产电影| 91亚洲va在线va天堂va国 | 青娱乐一区二区| 久久影院在线观看| 欧美午夜电影在线| 91视频91自| 开心激情综合网| 日本特黄一级片| 美女搡bbb又爽又猛又黄www| 成人国产精品免费视频| 欧美三级乱人伦电影| 麻豆精品精品国产自在97香蕉 | 国产色视频在线播放| 国产一区二区三区四区五区加勒比| 久久久久久一区二区三区 | 中文字幕第10页| www.成年人视频| 国产精品专区一| 亚洲久草在线视频| 国产高中女学生第一次| 国产精品入口麻豆| 亚洲mv在线看| 在线日韩欧美视频| 亚洲精品国产a| 刘亦菲毛片一区二区三区| 欧美性精品220| 亚洲成人自拍| 亚洲天堂影视av| 国产日韩三级在线| jizz国产在线| 少妇极品熟妇人妻无码| 精品久久久久久一区| 色七七影院综合| 亚洲国产精品麻豆| 免费高清在线一区| 粉嫩av性色av蜜臀av网站| 激情五月婷婷六月| 欧美夜福利tv在线| 欧美videos中文字幕| 欧美激情视频在线免费观看 欧美视频免费一 | 国产精品亚洲综合| 一区三区二区视频| 一片黄亚洲嫩模| 久久一日本道色综合久久| 国产传媒国产传媒| 特大黑人娇小亚洲女mp4| 国产欧美久久久久久| 亚洲精品美女久久久久| 国产精品国产三级国产专播品爱网| 成人黄色在线观看视频| 久久国产精品国语对白| 国产精品一区二区小说| 欧美精品一区在线发布| 欧美猛男性生活免费| 国产精品嫩草久久久久| 日韩一级中文字幕| 国产精品99无码一区二区| 日本一本在线视频| 青青草影院在线观看| 国产玖玖精品视频| 一二美女精品欧洲| 欧美日韩一级二级三级| 国产精品伦理一区二区| 蜜臀久久99精品久久久久久9| 波多野结衣大片| 人人人妻人人澡人人爽欧美一区| 久草视频国产在线| 7777精品伊久久久大香线蕉语言| 久久亚洲国产精品| 欧美一区二区视频免费观看| 亚洲一区二区三区中文字幕在线| 成人久久久精品乱码一区二区三区| 狠狠综合久久av一区二区| 国产成人精品一区二三区| 精品影片一区二区入口| 美女一区二区三区视频| 老汉色影院首页| 欧美日韩在线一区二区三区| 国产日本欧美视频| 国产+人+亚洲| 日韩少妇与小伙激情| 欧美一区二区人人喊爽| 亚洲视频一二三| 99久久精品99国产精品| 日韩中文字幕av电影| 欧美高清69hd| 黄色在线观看免费| 四虎永久免费影院| 中文字幕在线视频一区二区| 噜噜噜久久亚洲精品国产品麻豆| 成人一区二区av| 欧美成人dvd在线视频| 国产精品一区二区免费看| 成人亚洲欧美一区二区三区| 全球成人中文在线| 亚州欧美日韩中文视频| 日韩中文理论片| 亚洲无亚洲人成网站77777| 日韩欧美在线观看一区二区三区| 欧美日韩国产一级| 午夜精品福利一区二区蜜股av| 亚洲四区在线观看| 日韩一区在线看| 亚洲欧洲韩国日本视频| 国产精品久99| 亚洲精品写真福利| 亚洲一区在线观看免费 | 国产成人精品av久久| 国产午夜福利一区二区| 欧美日韩中文视频| 国产网友自拍视频| 青青草av在线播放| 中文字幕一区在线播放| 你懂的国产在线| 中国一级片黄色一级片黄| 亚洲无码精品国产| 精品乱子伦一区二区| 午夜影院免费视频| 久久电影国产免费久久电影| 久热精品在线| 日本不卡在线视频| 黄一区二区三区| 国产精品911| 久久久777精品电影网影网 | 色网站国产精品| 日韩欧美一区二区视频| 日韩三级中文字幕| 亚洲片av在线| 欧美福利视频网站| 国产精品中文字幕在线| 国产精品v欧美精品v日韩| 日韩欧美一区二区三区四区五区| 日韩视频在线免费播放| 日本十八禁视频无遮挡| 在线视频观看一区二区| 自拍偷拍视频亚洲| 免费在线不卡视频| 欧日韩在线视频| 成人中文字幕电影| 一区二区中文视频| 欧美日韩三级一区二区| 国产亚洲欧洲高清| 欧美做受高潮电影o| 国产精品一区在线观看| www.日本三级| 久久久福利影院| 久久精品一区二区免费播放| 久久久久久久黄色片| 天天色综合久久| 99精品视频在线播放观看| 亚洲精品国产品国语在线app| 欧美精品在线一区二区三区| 综合国产在线观看| 国产九九精品视频| 人人妻人人澡人人爽欧美一区 | 中文字幕乱码一区| 国产一级特黄视频| 一区二区美女视频| 欧美熟妇乱码在线一区| 久久精品国产亚洲一区二区三区| 岛国av在线一区| 国产精品毛片久久久久久久| 色婷婷av一区二区三区之一色屋| 日韩欧美成人午夜| 97久久伊人激情网| 精品国产一区二区三区四区精华| 人人妻人人添人人爽欧美一区| 醉酒壮男gay强迫野外xx| 无码人妻丰满熟妇精品| 国产精品自拍网站| 亚洲国产精品综合小说图片区| 日韩精品中文字幕在线观看| 久久影视电视剧免费网站| 欧美综合第一页| 日韩欧美亚洲在线| 精品久久久久久无码人妻| 国产精品传媒在线观看| 国产剧情一区二区三区| 精品久久久久久久久久国产|