php的无线分类
应该有很多人都知道这个知识点,在咱们工作和学习中,无限分类是必不可缺少的,如咱们写一个最基本的后台,都是有分级菜单的,一级,二级。。。。复杂的还有三级菜单(用的比较少)。还有像咱们如果写一个文章,商城商品的分类,都会用到这个知识点,话说我之前刚听说这个无线分类的时候,也是一脸懵逼,在你没有接触任何事情的时候,都会感觉到陌生,但是一旦接触了以后,孰能生巧,想忘都忘不了,前提是得扎牢。
接下来我来为大家解释无线分类具体怎么做:
下面先看一下数据库的结构
parent_id其实就是父级id 也就是咱们常说的pid
接下来先写一个接口,获取表中的数据
public function test(){
$list = db('department')
->where('company_id=26')
->select();
}
return json(['code'=>200,'message'=>'获取成功', 'data' => $list]);
}
从表中我们可以看到
data
0
id 1
company_id 26
dep_name "斑马售后部"
parent_id 0
1
id 3
company_id 26
dep_name "斑马开发部"
parent_id 0
2
id 4
company_id 26
dep_name "斑马销售部"
parent_id 0
3
id 7
company_id 26
dep_name "开发一部"
parent_id 3
4
id 10
company_id 26
dep_name "开发二部"
parent_id 3
5
id 12
company_id 26
dep_name "UI一部"
parent_id 3
6
id 14
company_id 26
dep_name "售后一部"
parent_id 1
7
id 23
company_id 26
dep_name "售后二部"
parent_id 1
8
id 28
company_id 26
dep_name "销售A组"
parent_id 4
9
id 29
company_id 26
dep_name "销售B组"
parent_id 4
10
id 33
company_id 26
dep_name "fdsaf"
parent_id 12
这样的数据,会让我们开发人员,看着很头疼的
我们希望把父级菜单放到最顶部,在父栏目里有子栏目,子栏目有孙子栏目。。。。。这样可以无限分类下去。
看一下各个字段的关系,根据parent_id(父级id)可以找到父亲id。咱们可以这样写
public function getTree($list,$pid)
{
$tree = array();
foreach($list as $k => $v)
{
if($v['parent_id'] == $pid)
{ //父亲找到儿子
$v['child'] = $this->getTree($list, $v['id']);
$tree[] = $v;
}
}
return $tree;
}
public function test(){
$list = db('department')
->where('company_id=26')
->select();
$tree = array();
if (is_array($list)) {
$tree = $this->getTree($list,0); // 调用getTree()函数
}
return json(['code'=>200,'message'=>'获取成功', 'data' => $tree]);
}
这样基本上就可以实现了,很实用,建议收藏!!!!!