比如数据库中的表是这样的:
要得到的结果是这样的数组:
代码是这样的:
$where['is_del'] = 0;
$where['fatherId'] = 0;
$list = $obj->where($where)->select(); //获取父类的类别
foreach($list as $i=>$o){
$data['is_del'] = 0;
$data['fatherId'] = $o['cid'];
$second = $obj->where($data)->select(); //获取父类下的子类
$list[$i]['child'] = $second; //将子类放到他的父类下
}
$this->assign('list',$list);
自己想的办法,跟thinkphp好像没什么关系哈,不知道thinkphp是不是有这方面的封装的方法啊!!!
好吧,看了评论再上网搜一下,原来这个叫无限分类,网上已经一大把的共享代码了,这里就放一个也是开源中国搜来的吧!!
function genTree($items,$id='id',$pid='pid',$son = 'children'){
$tree = array(); //格式化的树
$tmpMap = array(); //临时扁平数据
foreach ($items as $item) {
$tmpMap[$item[$id]] = $item;
}
foreach ($items as $item) {
if (isset($tmpMap[$item[$pid]])) {
$tmpMap[$item[$pid]][$son][] = &$tmpMap[$item[$id]];
} else {
$tree[] = &$tmpMap[$item[$id]];
}
}
return $tree;
}
链接