• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

求教无限分类的当前位置怎么写,顶者有分!

php 搞代码 3年前 (2022-01-23) 18次浏览 已收录 0个评论

下面是一个无限分类的代码,想请问一下类中函数get_pos的使用方法,谢谢!!!

<?php/** +------------------------------------------------ * 通用的树型类 +------------------------------------------------ * @author [email protected] +------------------------------------------------ * @date 2010年11月23日10:09:31 +------------------------------------------------ */class Tree{     /**     +------------------------------------------------     * 生成树型结构所需要的2维数组     +------------------------------------------------     * @author [email protected]     +------------------------------------------------     * @var Array     */    var $arr = array();     /**     +------------------------------------------------     * 生成树型结构所需修饰符号,可以换成图片     +------------------------------------------------     * @author [email protected]     +------------------------------------------------     * @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]['parentid'];        $pid = $this->arr[$pid]['parentid'];        if(is_array($this->arr))        {            foreach($this->arr as $id => $a)            {                if($a['parentid'] == $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['parentid'] == $myid) $new<strong style="color:transparent">9来源gaodai#ma#com搞@代~码$网</strong>搞gaodaima代码arr[$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]['parentid'];        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 [email protected]     * @param $myid 表示获得这个ID下的所有子级     * @param $str 生成树形结构基本代码, 例如: "\$spacer\$name"     * @param $sid 被选中的ID, 比如在做树形下拉框的时候需要用到     * @param $adds     * @param $str_group     */    function get_tree($myid, $str, $sid = 0, $adds = '', $str_group = '')    {        $number=1;        $child = $this->get_child($myid);        if(is_array($child)) {            $total = count($child);            foreach($child as $id=>$a) {                $j=$k='';                if($number==$total) {                    $j .= $this->icon[2];                } else {                    $j .= $this->icon[1];                    $k = $adds ? $this->icon[0] : '';                }                $spacer = $adds ? $adds.$j : '';                $selected = $id==$sid ? 'selected' : '';                @extract($a);                $parentid == 0 && $str_group ? eval("\$nstr = \"$str_group\";") : eval("\$nstr = \"$str\";");                $this->ret .= $nstr;                $this->get_tree($id, $str, $sid, $adds.$k.' ',$str_group);                $number++;            }        }        return $this->ret;    }     /**    * 同上一方法类似,但允许多选    */    function get_tree_multi($myid, $str, $sid = 0, $adds = '')    {        $number=1;        $child = $this->get_child($myid);        if(is_array($child))        {            $total = count($child);            foreach($child as $id=>$a)            {                $j=$k='';                if($number==$total)                {                    $j .= $this->icon[2];                }                else                {                    $j .= $this->icon[1];                    $k = $adds ? $this->icon[0] : '';                }                $spacer = $adds ? $adds.$j : '';                 $selected = $this->have($sid,$id) ? 'selected' : '';                @extract($a);                eval("\$nstr = \"$str\";");                $this->ret .= $nstr;                $this->get_tree_multi($id, $str, $sid, $adds.$k.' ');                $number++;            }        }        return $this->ret;    }     function have($list,$item){        return(strpos(',,'.$list.',',','.$item.','));    }     /**     +------------------------------------------------     * 格式化数组     +------------------------------------------------     * @author [email protected]     +------------------------------------------------     */    function getArray($myid=0, $sid=0, $adds='')    {        $number=1;        $child = $this->get_child($myid);        if(is_array($child)) {            $total = count($child);            foreach($child as $id=>$a) {                $j=$k='';                if($number==$total) {                    $j .= $this->icon[2];                } else {                    $j .= $this->icon[1];                    $k = $adds ? $this->icon[0] : '';                }                $spacer = $adds ? $adds.$j : '';                @extract($a);                $a['name'] = $spacer.' '.$a['name'];                $this->ret[$a['id']] = $a;                $fd = $adds.$k.' ';                $this->getArray($id, $sid, $fd);                $number++;            }        }         return $this->ret;    }}?>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:求教无限分类的当前位置怎么写,顶者有分!
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址