thinkphp 无限极分类 获取某个分类的顶级id
时间: 2023-02-06 11:25:20 浏览: 69
ThinkPHP 是一个开源的 PHP 开发框架。在 ThinkPHP 中,可以使用无限极分类来组织数据,例如商品分类、文章分类等。
要获取某个分类的顶级分类 ID,可以使用以下方法:
1. 在分类数据表中查询该分类的父分类 ID,如果没有父分类或者父分类的 ID 为 0,则该分类为顶级分类,直接返回该分类的 ID。
2. 如果该分类存在父分类,则递归调用该方法,传入该分类的父分类 ID,直到找到顶级分类为止。
下面是一个示例代码:
```
function getTopCategoryId($categoryId)
{
// 查询分类信息
$category = Db::name('category')->where('id', $categoryId)->find();
if (!$category || $category['parent_id'] == 0) {
// 如果分类不存在或者该分类已经是顶级分类,则直接返回该分类的 ID
return $categoryId;
} else {
// 否则递归调用该函数,传入该分类的父分类 ID
return getTopCategoryId($category['parent_id']);
}
}
```
在调用该函数时,只需传入要查询的分类 ID,就可以获取该分类的顶级分类 ID。
例如,获取分类 ID 为 123 的分类的顶级分类 ID:
```
$top
相关问题
thinkphp 获取无限极分类里的顶级id
可以使用ThinkPHP自带的Tree类库来实现无限极分类,然后通过遍历数组获取顶级分类的ID。具体实现步骤如下:
1.使用Tree类库生成无限极分类数组
```
use think\Tree;
$tree = new Tree();
$categoryList = db('category')->select();
$tree->init($categoryList, 'pid');
$categoryArr = $tree->getTreeList($tree->getTreeArray(0), 'name');
```
2.遍历数组获取顶级分类ID
```
$topCategoryId = 0;
foreach ($categoryArr as $category) {
if ($category['pid'] == 0) {
$topCategoryId = $category['id'];
break;
}
}
echo $topCategoryId;
```
这段代码会遍历无限极分类数组,找到第一个pid为0的分类,然后返回该分类的ID作为顶级分类ID。
thinkphp 获取无限极分类里的父子分类名称,并逐级显示为一行
可以使用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`数组中。最后将父级分类名称和当前分类名称用`-`连接成一行,并输出到页面上。
注意:由于使用了递归函数,如果分类数据比较多,可能会导致栈溢出,需要增加递归深度限制或者优化算法。