欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          示例php+mysql查詢實(shí)現(xiàn)無限下級(jí)分類樹輸出

          示例php+mysql查詢實(shí)現(xiàn)無限下級(jí)分類樹輸出

          本文實(shí)例講述了php+mysql查詢實(shí)現(xiàn)無限下級(jí)分類樹輸出。分享給大家供大家參考,具體如下:

          這里介紹的php結(jié)合mysql查詢無限下級(jí)樹輸出,其實(shí)就是無限分類。給各位整理了幾個(gè)php無限分類的例子.

          【相關(guān)學(xué)習(xí)推薦:php編程(視頻),mysql視頻教程】

          樹輸出:

          function get_array($user_id,$top=0){ global $mysql,$_G;   $sql = "select user_id as name from `{spreads_users}`  where p1.spreads_userid='{$user_id}'"; $rows= $mysql->db_fetch_arrays($sql);   if($top==1){   $arr[0]['name']=$user_id;   $arr[0]['children']=array();   }   $top=$top+1; foreach ($rows as $key=>$value)  {      $r = get_array($value['name']); //調(diào)用函數(shù),傳入?yún)?shù),繼續(xù)查詢下級(jí)      $arr[0]['children'][$key]['name']= $value['username']; //組合數(shù)組       if(is_array($r)){       $arr[0]['children'][$key]['children']= $r[0]['children'];       }       $i++;     }     return $arr;   } $list = get_array("1000",1); //調(diào)用函數(shù)1000是頂級(jí)ID echo 'var data='.json_encode($list);

          這個(gè)是輸出 Array 然后轉(zhuǎn)讓為 json

          例子:

          表結(jié)構(gòu):id字段為分類標(biāo)識(shí),name字段為分類名,father_id字段為所屬父分類的id,path字段為分類路徑,儲(chǔ)存該分類祖先的集合,isdir判斷是否是目錄,1為是,0為否.

          顯示函數(shù):

          //$count為分類等級(jí) sort_list($str,$fatherid,$count) { $rs = $this->sql->re_datas("select * from sort where father_id = fatherid"); $num = $this->sql->sql_numrows(); $i=0; $n = 1; while(isset($rs[$i])) { $name = ""; for($n = 1 ; $n < $count ; $n ) { $name.="│ "; } if($i 1==$num) { $name.="└─".$rs[$i][name]; } else { $name.="├─".$rs[$i][name]; } if($rs[$i][isdir]) { $str.="<span style='color:#CCCCCC'>".$name."</span>"; } else { $str.=$name"; } $temp = $count 1; $str = $this->sort_list($str,$rs[$i][id],$temp); $i ; } return $str; }

          其中$this->sql對(duì)象為sql操作類對(duì)象,re_datas()函數(shù)返回查到的數(shù)組,sql_numrows()函數(shù)返回查詢到的數(shù)目.

          調(diào)用方法:

          $sort_list = sort_list($sort_list,0,1);

          例子:

          表:category

          id int 主鍵,自增
          name varchar 分類名稱
          pid int 父類id,默認(rèn)0

          頂級(jí)分類的 pid 默認(rèn)就是0了,當(dāng)我們想取出某個(gè)分類的子分類樹的時(shí)候,基本思路就是遞歸,當(dāng)然,出于效率問題不建議每次遞歸都查詢數(shù)據(jù)庫,通常的做法是先講所有分類取出來,保存到PHP數(shù)組里,再進(jìn)行處理,最后還可以將結(jié)果緩存起來以提高下次請(qǐng)求的效率.
          先來構(gòu)建一個(gè)原始數(shù)組,這個(gè)直接從數(shù)據(jù)庫中拉出來就行:

          $categories = array(   array('id'=>1,'name'=>'電腦','pid'=>0),   array('id'=>2,'name'=>'手機(jī)','pid'=>0),   array('id'=>3,'name'=>'筆記本','pid'=>1),   array('id'=>4,'name'=>'臺(tái)式機(jī)','pid'=>1),   array('id'=>5,'name'=>'智能機(jī)','pid'=>2),   array('id'=>6,'name'=>'功能機(jī)','pid'=>2),   array('id'=>7,'name'=>'超級(jí)本','pid'=>3),   array('id'=>8,'name'=>'游戲本','pid'=>3), );

          目標(biāo)是將它轉(zhuǎn)化為下面這種結(jié)構(gòu):

          電腦 —筆記本 ——-超級(jí)本 ——-游戲本 —臺(tái)式機(jī) 手機(jī) —智能機(jī) —功能機(jī)

          用數(shù)組來表示的話,可以增加一個(gè) children 鍵來存儲(chǔ)它的子分類:

          array(   //1對(duì)應(yīng)id,方便直接讀取   1 => array(     'id'=>1,     'name'=>'電腦',     'pid'=>0,     children=>array(       &array(         'id'=>3,         'name'=>'筆記本',         'pid'=>1,         'children'=>array(           //此處省略         )       ),       &array(         'id'=>4,         'name'=>'臺(tái)式機(jī)',         'pid'=>1,         'children'=>array(           //此處省略         )       ),     )   ),   //其他分類省略 )

          處理過程:

          $tree = array(); //第一步,將分類id作為數(shù)組key,并創(chuàng)建children單元 foreach($categories as $category){   $tree[$category['id']] = $category;   $tree[$category['id']]['children'] = array(); } //第二部,利用引用,將每個(gè)分類添加到父類children數(shù)組中,這樣一次遍歷即可形成樹形結(jié)構(gòu)。 foreach ($tree as $k=>$item) {   if ($item['pid'] != 0) {     $tree[$item['pid']]['children'][] = &$tree[$k];   } }

          print_r($tree);打印結(jié)果如下:

          Array (   [1] => Array     (       [id] => 1       [name] => 電腦       [pid] => 0       [children] => Array         (           [0] => Array             (               [id] => 3               [name] => 筆記本               [pid] => 1               [children] => Array                 (                   [0] => Array                     (                       [id] => 7                       [name] => 超級(jí)本                       [pid] => 3                       [children] => Array                         (                         )                     )                   [1] => Array                     (                       [id] => 8                       [name] => 游戲本                       [pid] => 3                       [children] => Array                         (                         )                     )                 )             )           [1] => Array             (               [id] => 4               [name] => 臺(tái)式機(jī)               [pid] => 1               [children] => Array                 (                 )             )         )     )   [2] => Array     (       [id] => 2       [name] => 手機(jī)       [pid] => 0       [children] => Array         (           [0] => Array             (               [id] => 5               [name] => 智能機(jī)               [pid] => 2               [children] => Array                 (                 )             )           [1] => Array             (               [id] => 6               [name] => 功能機(jī)               [pid] => 2               [children] => Array                 (                 )             )         )     )   [3] => Array     (       [id] => 3       [name] => 筆記本       [pid] => 1       [children] => Array         (           [0] => Array             (               [id] => 7               [name] => 超級(jí)本               [pid] => 3               [children] => Array                 (                 )             )           [1] => Array             (               [id] => 8               [name] => 游戲本               [pid] => 3               [children] => Array                 (                 )             )         )     )   [4] => Array     (       [id] => 4       [name] => 臺(tái)式機(jī)       [pid] => 1       [children] => Array         (         )     )   [5] => Array     (       [id] => 5       [name] => 智能機(jī)       [pid] => 2       [children] => Array         (         )     )   [6] => Array     (       [id] => 6       [name] => 功能機(jī)       [pid] => 2       [children] => Array         (         )     )   [7] => Array     (       [id] => 7       [name] => 超級(jí)本       [pid] => 3       [children] => Array         (         )     )   [8] => Array     (       [id] => 8       [name] => 游戲本       [pid] => 3       [children] => Array         (         )     ) )

          優(yōu)點(diǎn):關(guān)系清楚,修改上下級(jí)關(guān)系簡單.

          缺點(diǎn):使用PHP處理,如果分類數(shù)量龐大,效率也會(huì)降低.

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)