话不多说,请看代码: /** * 无级递归分类 TP框架 * @param int $assortPid 要查询分类的父级id * @param mixed $tag 上下级分类之间的分隔符 * @return string $tree 返回的分类树型结构结果 * */ function recursiveAssort($assortPid, $tag = '') { $assort = M('goods_class')->where("class_pid = $assortPid")->field('class_id, class_name')->select(); foreach 在PHP中,处理多级分类数据是常见的需求,特别是在构建电商平台或者内容管理系统时。无级递归分类就是解决这个问题的一种方法,它允许我们无限层级地展示数据。这里将介绍两种不同的PHP实现方式,分别适用于TP(ThinkPHP)框架和CI(CodeIgniter)框架。 ### 1. ThinkPHP (TP) 框架中的无级递归分类 #### 代码解释: ```php function recursiveAssort($assortPid, $tag = '') { // 查询当前父级ID为$assortPid的分类数据 $assort = M('goods_class')->where("class_pid = $assortPid")->field('class_id, class_name')->select(); // 初始化分类树型结构字符串 $tree = ''; // 遍历查询结果,生成HTML的<option>元素 foreach ($assort as $value) { // 添加当前分类到结果字符串,附带层级分隔符 $tree .= '<option value="' . $value['class_id'] . '">' . $tag . $value['class_name'] . '</option>'; // 递归调用自身,处理子分类 $tree .= recursiveAssort($value['class_id'], $tag . ' '); } // 返回最终的分类树型结构 return $tree; } ``` 在这个函数中,我们首先通过M()模型查询了所有父级ID为$assortPid的分类,然后使用`foreach`循环遍历结果,生成一个HTML `<option>` 元素,表示分类层级。每个分类的名称前面都附加了$tag作为层级分隔。接着,函数递归调用自身,处理当前分类的子分类,每次递归增加一个层级的分隔符。最后返回整个分类树结构。 ### 2. CodeIgniter (CI) 框架中的无级递归分类 #### 代码解释: ```php public function get_access() { // 初始化访问权限数组 $access = array(); // 定义字段并获取access表的数据 $field = 'id, pid, method, name, description'; $q_access = $this->db->select($field)->get('access'); $q_result = $q_access->result_array(); // 如果查询结果不为空 if (!empty($q_result)) { // 将查询结果转换为关联数组,键为id $items = array(); foreach ($q_result as $value) { $items[$value['id']] = $value; } // 遍历items,处理父子关系 foreach ($items as $key => $item) { // 如果父ID为0,说明是顶级分类 if ($item['pid'] == 0) { $access[] = &$items[$key]; } else { // 否则,将子分类添加到父分类的'sub_access'数组中 $items[$item['pid']]['sub_access'][] = &$items[$key]; } } } // 返回处理后的访问权限树 return $access; } ``` 在这个CI框架中的函数中,我们首先获取了access表中的数据,并将其转换为关联数组,便于后续操作。然后遍历这个数组,如果元素的pid为0,说明它是顶级分类,将其添加到$access数组中;否则,将该元素添加到其父元素的'sub_access'数组中。这样就形成了一个层次结构的数组,可以方便地展示和遍历。 这两种方法都是通过递归或循环来处理分类数据,实现无级递归分类。它们的核心思想是将数据结构转化为符合需求的形式,无论是HTML的树形结构还是数组结构,都能直观地展现数据的层级关系。在实际应用中,可以根据项目需求选择合适的方法。
- 粉丝: 4
- 资源: 952
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0