PHP 无限极分类详解编程语言
2023-06-13 09:11:04 时间
前言:之前实现无限极分类,都是自己写,也没管效率和其他人的实现方式,今天特此总结下各种无限极分类的实现方式。
一、从开源网站上看到的,非常非常的简介。一次性查出所有数据,然后再分类(传引用是核心)
$items = array( 1 = array(id = 1, pid = 0, name = 江西省), 2 = array(id = 2, pid = 0, name = 黑龙江省), 3 = array(id = 3, pid = 1, name = 南昌市), 4 = array(id = 4, pid = 2, name = 哈尔滨市), 5 = array(id = 5, pid = 2, name = 鸡西市), 6 = array(id = 6, pid = 4, name = 香坊区), 7 = array(id = 7, pid = 4, name = 南岗区), 8 = array(id = 8, pid = 6, name = 和兴路), 9 = array(id = 9, pid = 7, name = 西大直街), 10 = array(id = 10, pid = 8, name = 东北林业大学), 11 = array(id = 11, pid = 9, name = 哈尔滨工业大学), 12 = array(id = 12, pid = 8, name = 哈尔滨师范大学), 13 = array(id = 13, pid = 1, name = 赣州市), 14 = array(id = 14, pid = 13, name = 赣县), 15 = array(id = 15, pid = 13, name = 于都县), 16 = array(id = 16, pid = 14, name = 茅店镇), 17 = array(id = 17, pid = 14, name = 大田乡), 18 = array(id = 18, pid = 16, name = 义源村), 19 = array(id = 19, pid = 16, name = 上坝村), * 将数据格式化成树形结构 * @author Xuefen.Tong * @param array $items * @return array function genTree9($items) { $tree = array(); //格式化好的树 foreach ($items as $item) if (isset($items[$item[pid]])) $items[$item[pid]][son][] = $items[$item[id]]; else $tree[] = $items[$item[id]]; return $tree; echo ""; print_r(genTree5($items)); // 结果 Array [0] = Array [id] = 1 [pid] = 0 [name] = 江西省 [son] = Array [0] = Array [id] = 3 [pid] = 1 [name] = 南昌市 [1] = Array [id] = 13 [pid] = 1 [name] = 赣州市 [son] = Array [0] = Array [id] = 14 [pid] = 13 [name] = 赣县 [son] = Array [0] = Array [id] = 16 [pid] = 14 [name] = 茅店镇 [son] = Array [0] = Array [id] = 18 [pid] = 16 [name] = 义源村 [1] = Array [id] = 19 [pid] = 16 [name] = 上坝村 [1] = Array [id] = 17 [pid] = 14 [name] = 大田乡 [1] = Array [id] = 15 [pid] = 13 [name] = 于都县 [1] = Array [id] = 2 [pid] = 0 [name] = 黑龙江省 [son] = Array [0] = Array [id] = 4 [pid] = 2 [name] = 哈尔滨市 [son] = Array [0] = Array [id] = 6 [pid] = 4 [name] = 香坊区 [son] = Array [0] = Array [id] = 8 [pid] = 6 [name] = 和兴路 [son] = Array [0] = Array [id] = 10 [pid] = 8 [name] = 东北林业大学 [1] = Array [id] = 12 [pid] = 8 [name] = 哈尔滨师范大学 [1] = Array [id] = 7 [pid] = 4 [name] = 南岗区 [son] = Array [0] = Array [id] = 9 [pid] = 7 [name] = 西大直街 [son] = Array [0] = Array [id] = 11 [pid] = 9 [name] = 哈尔滨工业大学 [1] = Array [id] = 5 [pid] = 2 [name] = 鸡西市 )
二、递归方式。(也是一次性先把数据查出来,再分类,个人更倾向于这种)
$array = array( array(id = 1, pid = 0, name = 河北省), array(id = 2, pid = 0, name = 北京市), array(id = 3, pid = 1, name = 邯郸市), array(id = 4, pid = 2, name = 朝阳区), array(id = 5, pid = 2, name = 通州区), array(id = 6, pid = 4, name = 望京), array(id = 7, pid = 4, name = 酒仙桥), array(id = 8, pid = 3, name = 永年区), array(id = 9, pid = 1, name = 武安市),/**
* 格式化树状结构分类
* @param array $data
* @param int $pid
* @return array|bool
*/
private function getTreeMenu($data = array(), $pid= 0)
{
if (empty($data)) {
return false;
}
$list = [];
foreach($data as $value)
{
if($value[pid] == $pid)
{
$value[s_list] = $this- getTreeMenu($data, $value[id]);
$list[] = $value;
}
}
return $list;
}//输出结果 无限极分类实现大致效果
河北省
--邯郸市
----永年区
--武安市
北京市
--朝阳区
----望京
----酒仙桥
--通州区
三、带有数据库查询的递归(视情况而用)
public static function get_parents($id) static $list = []; $cat_data = Category::findOne($id)- toarray(); if($cat_data){ $list[] = $cat_data; $id = $cat_data[parent_id]; if($cat_data[parent_id] 0){ self::get_parents($id); return $list; }
以上就是本篇全部内容了,仅供自己温故而知新。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/16392.html
cgojava
相关文章
- PHP中CURL方法curl_setopt()函数的参数详解编程语言
- C++/Php/Python 语言执行shell命令详解编程语言
- PHP与Mysql测试kill慢查询并检验PDO的错误模式详解编程语言
- [PHP] PHP的纯CPU基准测试(PHP5.5.9 vs PHP7.2.1)详解编程语言
- [PHP] 从PHP 5.6.x 移植到 PHP 7.0.x新特性详解编程语言
- [PHP] url的pathinfo模式加载不同控制器的实现详解编程语言
- 加速Linux驱动下的PHP后端性能提升(linux让php后台)
- 给PHP开启shmop扩展实现共享内存详解编程语言
- PHP自定义错误和异常详解编程语言
- php-fpm和fastcgi的区别详解编程语言
- PHP for的1个问题详解编程语言
- PHP防止被重复请求接口的方法(网页端签名验证的方法)详解编程语言
- php判断是不是https的方法详解编程语言
- php 微信jssdk 微信分享一直报config:fail,Error: invalid signature(签名生成是一致的)详解编程语言
- PHP记录容联通话语音记录和通话时长的方法详解编程语言
- php一句话木马详解编程语言
- MySQL和PHP解决乱码问题(mysql php 乱码)
- Linux查看PHP版本的方法简介(linux查看php版本)
- 强悍的表现PHP与Redis的连接(redis链接php)
- php模拟POST|GET操作实现代码
- 微盾PHP脚本加密专家php解密算法
- PHP获取和操作配置文件php.ini的几个函数介绍
- PHP面向对象程序设计之接口用法