文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学的各位小编整理了PHP-PHP无限分类代码,支持数组格式化、直接输出菜单两种方式的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
复制代码 代码如下:
<?php
/**
+------------------------------------------------
* 通用的树型类
+------------------------------------------------
* @author yangyunzhou@foxmail.com
+------------------------------------------------
* @date 2010年11月23日10:09:31
+------------------------------------------------
*/
class Tree
{
/**
+------------------------------------------------
* 生成树型结构所需要的2维数组
+------------------------------------------------
* @author yangyunzhou@foxmail.com
+------------------------------------------------
* @var Array
*/
var $arr = array();
/**
+------------------------------------------------
* 生成树型结构所需修饰符号,可以换成
图片 +------------------------------------------------
* @author yangyunzhou@foxmail.com
+------------------------------------------------
* @var Array
*/
var $icon = array(''│'',''├'','' └'');
/**
* @access private
*/
var $ret = '''';
/**
* 构造函数,初始化类
* @param array 2维数组,例如:
* array(
* 1 => array(''id''=>''1'',''parentid''=>0,''name''=>''一级栏目一''),
* 2 => array(''id''=>''2'',''parentid''=>0,''name''=>''一级栏目二''),
* 3 => array(''id''=>''3'',''parentid''=>1,''name''=>''二级栏目一''),
* 4 => array(''id''=>''4'',''parentid''=>1,''name''=>''二级栏目二''),
* 5 => array(''id''=>''5'',''parentid''=>2,''name''=>''二级栏目三''),
* 6 => array(''id''=>''6'',''parentid''=>3,''name''=>''三级栏目一''),
* 7 => array(''id''=>''7'',''parentid''=>3,''name''=>''三级栏目二'')
* )
*/
function tree($arr=array())
{
$this->arr = $arr;
$this->ret = '''';
return is_array($arr);
}
/**
* 得到父级数组
* @param int
* @return array
*/
function get_parent($myid)
{
$newarr = array();
if(!isset($this->arr[$myid])) return false;
$pid = $this->arr[$myid][''pid''];
$pid = $this->arr[$pid][''pid''];
if(is_array($this->arr))
{
foreach($this->arr as $id => $a)
{
if($a[''pid''] == $pid) $newarr[$id] = $a;
}
}
return $newarr;
}
/**
* 得到子级数组
* @param int
* @return array
*/
function get_child($myid)
{
$a = $newarr = array();
if(is_array($this->arr))
{
foreach($this->arr as $id => $a)
{
if($a[''pid''] == $myid) $newarr[$id] = $a;
}
}
return $newarr ? $newarr : false;
}
/**
* 得到当前位置数组
* @param int
* @return array
*/
function get_pos($myid,&$newarr)
{
$a = array();
if(!isset($this->arr[$myid])) return false;
$newarr[] = $this->arr[$myid];
$pid = $this->arr[$myid][''pid''];
if(isset($this->arr[$pid]))
{
$this->get_pos($pid,$newarr);
}
if(is_array($newarr))
{
krsort($newarr);
foreach($newarr as $v)
{
$a[$v[''id'']] = $v;
}
}
return $a;
}
/**
* -------------------------------------
* 得到树型结构
* -------------------------------------
* @author yangyunzhou@foxmail.com
* @param $myid 表示获得这个ID下的所有子级
* @param $str 生成树形结构基本代码, 例如: "<option value=\$id \$select>\$spacer\$name</option>"
* @param $sid 被选中的ID, 比如在做树形下拉框的时候需