• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

thinkphp5使用无限极分类

php 搞代码 4年前 (2022-01-01) 39次浏览 已收录 0个评论

这篇文章主要为大家详细介绍了thinkphp5使用无限极分类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了thinkphp5使用无限极分类的具体代码,供大家参考,具体内容如下

1. 先根据普通递归完成无限极分类

2. 再根据分号的类的level 添加字符,再次存入数组的_name字段,最后按照_name字段输出

 /** * 获得树状数据 * @param $data 数据 * @param $title    数据库中字段名 * @param string $fieldPri  数据库中主键id * @param string $fieldPid  数据库中父id * @return array */ static public function tree($data, $title, $fieldPri = 'cid', $fieldPid = 'pid') { if (!is_array($data) || empty($data)) return array(); $arr = Data::channelList($data); foreach ($arr as $k => $v) { $str = ""; if ($v['_level'] > 2) { for ($i = 1; $i = $arr[$k]['_level']) { $arr[$k]['_name'] = $str . "├─ " . $v['_html'] . $t; } else { $arr[$k]['_name'] = $str . "└─ " . $v['_html'] . $t; } } else { $arr[$k]['_name'] = $v[$title]; } } //设置主键为$fieldPri $data = array(); foreach ($arr as $d) { $data[$d[$fieldPri]] = $d; } return $data; } 
 /** * 获得所有子栏目 * @param $data 栏目数据 * @param int $pid 操作的栏目 * @param string $html 栏目名前字符 * @param string $fieldPri 表主键 * @param string $fieldPid 父id * @param int $level 等级 * @return array */ static public function channelList($data, $pid = 0, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid', $level = 1) { $data = self::_channelList($data, $pid, $html, $fieldPri, $fieldPid, $level); if (empty($data)) return $data; foreach ($data as $n => $m) { if ($m['_level'] == 1) continue;//结束单次循环 $data[$n]['_first'] = false; $data[$n]['_end'] = false; if (!isset($data[$n - 1]) || $data[$n - 1]['_level'] != $m['_level']) { $data[$n]['_first'] = true; } if (isset($data[$n + 1]) && $data[$n]['_level'] > $data[$n + 1]['_le<i style="color:transparent">来源gaodai$ma#com搞$$代**码网</i>vel']) { $data[$n]['_end'] = true; } } //更新key为栏目主键 $category=array(); foreach($data as $d){ $category[$d[$fieldPri]]=$d; } return $category; }
 //只供channelList方法使用 /** * 获得所有子栏目 * @param $data 栏目数据 * @param int $pid 操作的栏目 * @param string $html 栏目名前字符 * @param string $fieldPri 表主键 * @param string $fieldPid 父id * @param int $level 等级 * @return array */ static private function _channelList($data, $pid = 0, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid', $level = 1) { if (empty($data)) return array(); $arr = array(); foreach ($data as $v) { $id = $v[$fieldPri]; if ($v[$fieldPid] == $pid) { $v['_level'] = $level; $v['_html'] = str_repeat($html, $level - 1); $arr[] = $v; $tmp = self::_channelList($data, $id, $html, $fieldPri, $fieldPid, $level + 1); $arr = array_merge($arr, $tmp);//array_merge把两个数组整合为一个数组 } } return $arr; }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持gaodaima搞代码网

以上就是thinkphp5使用无限极分类的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:thinkphp5使用无限极分类
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址