thinkphp实现无限分级 进行最顶一级的查找

该过程实现通过用户tid查询所属最顶级经销商的信息

一、建立相对应的数据表

请注意pid和tid的外键关联关系,最顶级的pid为0。

二、建立相对应的控制器

class tree{
    //定义一个空的数组
    static public $list = array();

    //递归函数 传入所有用户信息和查询的用户tid 通过pid识别相对应的父级的栏目id
    public function getTree($data,$tid){
    	//通过foreach循环获取的数据
    	foreach ($data as $v) {
    	    //判断当前数据是否存在传输的id
    		if($v['tid'] == $tid){
    			//存在 判断是否经销商
    			if($v['isDear'] == 1){
    				//是 将当前用户资料保存赋值于数组
    				self::$list[] = $v;
    			}else{
    				//否 将当条数据所属pid及数据传输 重复上条判断
    				self::getTree($data,$v['pid']);
    			}
    		}
    	}
    	return self::$list;
    }

    //接下来在方法中调用
    public function getDear(){
        //通过get获取所需查询的用户id
         $tid = input('get.tid');
        //获取所有用户资料
         $res = db('info')->select();
        //调用递归函数
         $res = self::getTree($res,$tid);
        //所获得的数据在view中显示
         $this->assign('data',$res);
         return $this->fetch('dear');
    }
}

三、在前台模板中显示出来

<table>
     <tr>
         {volist name='data' id='vo'}
              <td>用户名:{$vo['name']}</td>
              <td>pid:{$vo['pid']}</td>
              <td>是否经销商:{$vo['isDear']}</td>
         {/volist}
     </tr>
</table>

四、最后显示结果如下


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值