当前位置:Gxlcms > PHP教程 > 求教无限分类的当前位置怎么写,顶者有分!

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

时间:2021-07-01 10:21:17 帮助过:2人阅读

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

 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) $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]['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 yangyunzhou@foxmail.com     * @param $myid 表示获得这个ID下的所有子级     * @param $str 生成树形结构基本代码, 例如: ""     * @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 yangyunzhou@foxmail.com     +------------------------------------------------     */    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;    }}?>


回复讨论(解决方案)

$arr = 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'=>'三级栏目二')          ); $tree = new Tree($arr); $tree->get_pos($myid,$newarr);

$arr = 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'=>'三级栏目二')          ); $tree = new Tree($arr); $tree->get_pos($myid,$newarr);



这个我知道,请问一下, $tree->get_pos($myid,$newarr);时,$newarr的值是什么呢?

你自己定义的一个数组

你自己定义的一个数组

我现在就是想知道这个数组是个什么值


你自己定义的一个数组

我现在就是想知道这个数组是个什么值

$arr = array(          1 => array('id'=>'1'),          2 => array('id'=>'2'),          3 => array('id'=>'3'),          4 => array('id'=>'4'),          5 => array('id'=>'5'),          6 => array('id'=>'6'),          7 => array('id'=>'7')          ); $tree = new Tree($arr); $pos = $tree->get_pos('3',$arr); var_dump($pos);



这个函数就是把某个数组的某个位置放在第一然后倒序

function get_pos($myid,&$newarr)
应写作
function get_pos($myid,&$newarr=array())

即不需要显式的传递数组
$newarr 只是递归时的工作参数

get_pos 的作用是产生“棉花糖”数据
即从根节点到当前节点的路径
用于打印
CSDN > CSDN论坛 > PHP > 基础编程
这样的内容

人气教程排行