最新公告
  • 欢迎您光临波比源码,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • php无限分类可支持输出树状图实现代码

    这是一段可支持输出树状图的php无限分类实现代码,转自其它网站有需要了解的朋友可参考一下哦,数据库结构我们只要id,parentid,name这三个字段就可以了,大家可自行创建。

    数据库结构我们只要,无平台限制,只需要告知id,parentid,name 即可,下面是php代码,需要php环境支持,代码如下:

    1. <?php 
    2. /** 
    3. * 通用的树型类,可以生成任何树型结构 
    4. */ 
    5. class tree 
    6.  /** 
    7.  * 生成树型结构所需要的2维数组 
    8.  * @var array 
    9.  */ 
    10.  var $arr = array(); 
    11.  /** 
    12.  * 生成树型结构所需修饰符号,可以换成图片 
    13.  * @var array 
    14.  */ 
    15.  var $icon = array('│','├','└'); 
    16.  /** 
    17.  * @access private 
    18.  */ 
    19.  var $ret = ''
    20.  /** 
    21.  * 构造函数,初始化类 
    22.  * @param array 2维数组,例如: 
    23.  * array( 
    24.  *      1 => array('id'=>'1','parentid'=>0,'name'=>'一级栏目一'), 
    25.  *      2 => array('id'=>'2','parentid'=>0,'name'=>'一级栏目二'), 
    26.  *      3 => array('id'=>'3','parentid'=>1,'name'=>'二级栏目一'), 
    27.  *      4 => array('id'=>'4','parentid'=>1,'name'=>'二级栏目二'), 
    28.  *      5 => array('id'=>'5','parentid'=>2,'name'=>'二级栏目三'), 
    29.  *      6 => array('id'=>'6','parentid'=>3,'name'=>'三级栏目一'), 
    30.  *      7 => array('id'=>'7','parentid'=>3,'name'=>'三级栏目二') 
    31.  *      ) 
    32.  */ 
    33.  function tree($arr=array()) 
    34.  { 
    35.        $this->arr = $arr
    36.     $this->ret = ''
    37.     return is_array($arr); 
    38.  } 
    39.     /** 
    40.  * 得到父级数组 
    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.  * 得到子级数组 
    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.  * 得到当前位置数组 
    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.   *  得到树型结构 
    105.   * ————————————- 
    106.   * @author  Midnight(杨云洲),  yangyunzhou@foxmail.com 
    107.   * @param $myid 表示获得这个ID下的所有子级 
    108.   * @param $str 生成树形结构基本代码, 例如: "<option value=$id $select>$spacer$name</option>" 
    109.   * @param $sid 被选中的ID, 比如在做树形下拉框的时候需要用到 
    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 这样哦,可实现无限级分类.
    波比源码 – 精品源码模版分享 | www.bobi11.com
    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

    波比源码 » php无限分类可支持输出树状图实现代码

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    波比源码
    一个高级程序员模板开发平台
    升级波友尊享更多特权立即升级