thinkphp 获取无限极分类里的父子分类名称,并逐级显示为一行
时间: 2024-03-15 18:47:43 浏览: 13
可以使用ThinkPHP自带的Tree类库来实现无限极分类,然后通过递归实现获取父子分类名称,并逐级显示为一行。具体实现步骤如下:
1.使用Tree类库生成无限极分类数组
```
use think\Tree;
$tree = new Tree();
$categoryList = db('category')->select();
$tree->init($categoryList, 'pid');
$categoryArr = $tree->getTreeList($tree->getTreeArray(0), 'name');
```
2.递归获取父子分类名称,并逐级显示为一行
```
function getParentCategories($id, $categoryArr, &$parentCategoryNames) {
foreach ($categoryArr as $category) {
if ($category['id'] == $id) {
if ($category['pid'] != 0) {
getParentCategories($category['pid'], $categoryArr, $parentCategoryNames);
}
$parentCategoryNames[] = $category['name'];
break;
}
}
}
foreach ($categoryArr as $category) {
$parentCategoryNames = [];
getParentCategories($category['id'], $categoryArr, $parentCategoryNames);
echo implode('-', $parentCategoryNames) . '-' . $category['name'] . '<br>';
}
```
这段代码会遍历无限极分类数组,对于每一个分类,调用`getParentCategories`递归函数获取其父级分类名称,并添加到`$parentCategoryNames`数组中。最后将父级分类名称和当前分类名称用`-`连接成一行,并输出到页面上。
注意:由于使用了递归函数,如果分类数据比较多,可能会导致栈溢出,需要增加递归深度限制或者优化算法。