欢迎您光临买源码,本站秉承服务宗旨 履行“站长”责任,销售只是起点,服务永无止境!

tp5获取无限级分类顶级分类的方法

之前讲到的课程里面提到了获取顶级分类,但是我们假定我们的项目只涉及到了两级的分类,所以获取顶级分类非常简单,如果pid不等于0那么这个pid就不是顶级分类,如果等于0这条记录的id就是顶级分类了,这是只考虑两级分类的情况。

有网友反馈说他的项目用到了三级后面可能会有四级分类,好吧,我们重写一下,让我们的项目得以支持无限极分类查找顶级分类。我自己也在我们博客记录下来,方便下个项目使用。

下面就是我们的核心代码块,大家看看:

这里我们用两个方法相互配合,达到获取顶级分类id的目的,有些网友可能能写出来,但是应该有些地方不是特别理解。

1、为什么通过两个方法? 一个方法可以实现吗?

答:1个方法很明显可以实现的,但是,如果你仔细看会发现我们 db(‘cate’)->select(); 这句话是查找所有的栏目,如果写一个方法的话,又因为我们用到了递归,也就是说你每执行一次循环就需要重新查找数据,非常浪费服务器资源,所有我们先查出来然后传递,这样执行一次就可以了,就是为了节省服务器资源同时提高速度。

2、为什么是  static $topId ?这个静态变量是干嘛使的?

答:这你需要知道静态变量的作用以及了解我们下面的方法。

静态变量就是为了存储数据,不丢失。

比如我们查找顶级栏目的时候,当我们执行最后一次循环的时候 if($v[‘id’]==$cates[‘pid’] ) 这个判断是执行不通过的,因为最后一次$cates[‘pid’]==0 我们只能通过static保留住上一次循环得到的值,就是我们的顶级栏目的id

public function getTopId($cid){
    $data=db('cate')->select();
    return $this->_getTopId($cid,$data);
}

public function _getTopId($cid,$data){
    static $topId;
    $cates=db('cate')->find($cid);
    if($cates['pid']==0){
        return $cates['id'];
    }
    foreach ($data as $k => $v) {
        if($cates['pid']==$v['id']){
            $topId=$v['id'];
            $this->_getTopId($v['id'],$data);
        }
    }
    return $topId;
}

 

免责声明:
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

买源码 » tp5获取无限级分类顶级分类的方法

发表评论