国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

php無限分類可支持輸出樹狀圖實(shí)現(xiàn)代碼

2024-05-04 21:56:56
字體:
供稿:網(wǎng)友

這是一段可支持輸出樹狀圖的php無限分類實(shí)現(xiàn)代碼,轉(zhuǎn)自其它網(wǎng)站有需要了解的朋友可參考一下哦,數(shù)據(jù)庫結(jié)構(gòu)我們只要id,parentid,name這三個(gè)字段就可以了,大家可自行創(chuàng)建。

數(shù)據(jù)庫結(jié)構(gòu)我們只要,無平臺(tái)限制,只需要告知id,parentid,name 即可,下面是php代碼,需要php環(huán)境支持,代碼如下:

  1. <?php 
  2. /** 
  3. * 通用的樹型類,可以生成任何樹型結(jié)構(gòu) 
  4. */ 
  5. class tree 
  6.  /** 
  7.  * 生成樹型結(jié)構(gòu)所需要的2維數(shù)組 
  8.  * @var array 
  9.  */ 
  10.  var $arr = array(); 
  11.  /** 
  12.  * 生成樹型結(jié)構(gòu)所需修飾符號(hào),可以換成圖片 
  13.  * @var array 
  14.  */ 
  15.  var $icon = array('│','├','└'); 
  16.  /** 
  17.  * @access private 
  18.  */ 
  19.  var $ret = ''
  20.  /** 
  21.  * 構(gòu)造函數(shù),初始化類 
  22.  * @param array 2維數(shù)組,例如: 
  23.  * array( 
  24.  *      1 => array('id'=>'1','parentid'=>0,'name'=>'一級(jí)欄目一'), 
  25.  *      2 => array('id'=>'2','parentid'=>0,'name'=>'一級(jí)欄目二'), 
  26.  *      3 => array('id'=>'3','parentid'=>1,'name'=>'二級(jí)欄目一'), 
  27.  *      4 => array('id'=>'4','parentid'=>1,'name'=>'二級(jí)欄目二'), 
  28.  *      5 => array('id'=>'5','parentid'=>2,'name'=>'二級(jí)欄目三'), 
  29.  *      6 => array('id'=>'6','parentid'=>3,'name'=>'三級(jí)欄目一'), 
  30.  *      7 => array('id'=>'7','parentid'=>3,'name'=>'三級(jí)欄目二') 
  31.  *      ) 
  32.  */ 
  33.  function tree($arr=array()) 
  34.  { 
  35.        $this->arr = $arr
  36.     $this->ret = ''
  37.     return is_array($arr); 
  38.  } 
  39.     /** 
  40.  * 得到父級(jí)數(shù)組 
  41.  * @param int 
  42.  * @return array 
  43.  */ 
  44.  function get_parent($myid
  45.  { 
  46.   $newarr = array(); 
  47.   if(!isset($this->arr[$myid])) return false; 
  48.   $pid = $this->arr[$myid]['parentid']; 
  49.   $pid = $this->arr[$pid]['parentid']; 
  50.   if(is_array($this->arr)) 
  51.   { 
  52.    foreach($this->arr as $id => $a
  53.    { 
  54.     if($a['parentid'] == $pid$newarr[$id] = $a
  55.    } 
  56.   } 
  57.   return $newarr
  58.  } 
  59.     /** 
  60.  * 得到子級(jí)數(shù)組 
  61.  * @param int 
  62.  * @return array 
  63.  */ 
  64.  function get_child($myid
  65.  { 
  66.   $a = $newarr = array(); 
  67.   if(is_array($this->arr)) 
  68.   { 
  69.    foreach($this->arr as $id => $a
  70.    { 
  71.     if($a['parentid'] == $myid$newarr[$id] = $a
  72.    } 
  73.   } 
  74.   return $newarr ? $newarr : false; 
  75.  } 
  76.     /** 
  77.  * 得到當(dāng)前位置數(shù)組 
  78.  * @param int 
  79.  * @return array 
  80.  */ 
  81.  function get_pos($myid,&$newarr
  82.  { 
  83.   $a = array(); 
  84.   if(!isset($this->arr[$myid])) return false; 
  85.         $newarr[] = $this->arr[$myid]; 
  86.   $pid = $this->arr[$myid]['parentid']; 
  87.   if(isset($this->arr[$pid])) 
  88.   { 
  89.       $this->get_pos($pid,$newarr); 
  90.   } 
  91.   if(is_array($newarr)) 
  92.   { 
  93.    krsort($newarr); 
  94.    foreach($newarr as $v
  95.    { 
  96.     $a[$v['id']] = $v
  97.    } 
  98.   } 
  99.   return $a
  100.  } 
  101.  
  102.  /** 
  103.   * ------------------------------------- 
  104.   *  得到樹型結(jié)構(gòu) 
  105.   * ------------------------------------- 
  106.   * @author  Midnight(楊云洲),  yangyunzhou@foxmail.com 
  107.   * @param $myid 表示獲得這個(gè)ID下的所有子級(jí) 
  108.   * @param $str 生成樹形結(jié)構(gòu)基本代碼, 例如: "<option value=$id $select>$spacer$name</option>" 
  109.   * @param $sid 被選中的ID, 比如在做樹形下拉框的時(shí)候需要用到 
  110.   * @param $adds 
  111.   * @param $str_group 
  112.   * @return unknown_type 
  113.   */ 
  114.  function get_tree($myid$str$sid = 0, $adds = ''$str_group = ''
  115.  { 
  116.   $number=1; 
  117.   $child = $this->get_child($myid); 
  118.   if(is_array($child)) 
  119.   { 
  120.       $total = sqlserver/42852.htm target=_blank >count($child); 
  121.    foreach($child as $id=>$a
  122.    { 
  123.     $j=$k=''
  124.     if($number==$total
  125.     { 
  126.      $j .= $this->icon[2]; 
  127.     } 
  128.     else 
  129.     { 
  130.      $j .= $this->icon[1]; 
  131.      $k = $adds ? $this->icon[0] : ''
  132.     } 
  133.     $spacer = $adds ? $adds.$j : ''
  134.     $selected = $id==$sid ? 'selected' : ''
  135.     @extract($a); 
  136.     $parentid == 0 && $str_group ? eval("$nstr = "$str_group";") : eval("$nstr = "$str";"); 
  137.     $this->ret .= $nstr
  138.     $this->get_tree($id$str$sid$adds.$k.'&nbsp;',$str_group); 
  139.     $number++; 
  140.    } 
  141.   } 
  142.   return $this->ret; 
  143.  } 
  144.     /** 
  145.  * 同上一方法類似,但允許多選 
  146.  */ 
  147.  function get_tree_multi($myid$str$sid = 0, $adds = ''
  148.  { 
  149.   $number=1; 
  150.   $child = $this->get_child($myid); 
  151.   if(is_array($child)) 
  152.   { 
  153.       $total = count($child); 
  154.    foreach($child as $id=>$a
  155.    { 
  156.     $j=$k=''
  157.     if($number==$total
  158.     { 
  159.      $j .= $this->icon[2]; 
  160.     } 
  161.     else 
  162.     { 
  163.      $j .= $this->icon[1]; 
  164.      $k = $adds ? $this->icon[0] : ''
  165.     } 
  166.     $spacer = $adds ? $adds.$j : ''
  167.     $selected = $this->have($sid,$id) ? 'selected' : ''
  168.     //echo $sid.'=>'.$id.' : '.$selected.' . <br/>'; 
  169.     @extract($a); 
  170.     eval("$nstr = "$str";"); 
  171.     $this->ret .= $nstr
  172.     $this->get_tree_multi($id$str$sid$adds.$k.'&nbsp;'); 
  173.     $number++; 
  174.    } 
  175.   } 
  176.   return $this->ret; 
  177.  } 
  178.  function have($list,$item){ 
  179.   return(strpos(',,'.$list.',',','.$item.',')); 
  180.  } 
  181. ?> 

效果就是

aa
  bbb
  ccc 這樣哦,可實(shí)現(xiàn)無限級(jí)分類.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 榆社县| 固阳县| 淮阳县| 津南区| 珲春市| 大化| 方城县| 雷山县| 边坝县| 宜宾县| 龙南县| 奎屯市| 西昌市| 宁武县| 吕梁市| 汉川市| 旬阳县| 武邑县| 定远县| 昌江| 本溪市| 武乡县| 梨树县| 梁河县| 许昌市| 乐昌市| 清水河县| 华安县| 秀山| 砀山县| 文安县| 时尚| 襄樊市| 龙州县| 南昌市| 陆河县| 尼木县| 芦山县| 灵台县| 隆德县| 色达县|