欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年09月11日 10:21:54   作者:紅塵困住年少  
這篇文章主要介紹了PHP實(shí)現(xiàn)無限極分類生成分類樹的方法,結(jié)合實(shí)例形式簡(jiǎn)單分析了無限極分類的原理與實(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;
}

測(cè)試運(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)文章

最新評(píng)論