php 无限级分类 获取顶级分类ID


Posted in PHP onMarch 13, 2016

有这样一个表,id是分类的ID,name是分类名称,pid是上级分类的ID。

现在有个分类ID,程序要找到它上级的上级的上级……分类的ID,简单说就是找出顶级分类的ID。
比如“新鲜水果”的ID是13,对应父类ID是5,而5的父ID是1,1没有父类,也就是顶级分类了。

以前年轻气盛不懂事,总想着用递归来查找,然后再将结果缓存来解决性能问题。
后来又试过将整个表缓存起来,再递归查找。
再后来……似乎比较少有机会遇到无限级分类……

最近有个同事问我怎么“优雅”的解决这个问题。
于是我灵机一动,就有了如下解决方案:

<?php
$sql = "select id, pid from tablename ";
// 查询后 将结果处理成 如下数组格式
$arr = [
  // id => pid
  1 => 0,
  // 省略...
  5 => 1,
  // 省略...
  13 => 5
];
// 建议将这数组缓存起来

$id = 13;
while($arr[$id]) {
  $id = $arr[$id];
}
echo $id; // 1

不得不说:真是太优雅了!连我都佩服我自己了,同事更是五体投地,痛哭流涕。
因为他写了几十行循环再判断再递归的代码,被我用两行代码替换了……

PHP 相关文章推荐
一个简单的自动发送邮件系统(二)
Oct 09 PHP
php数组对百万数据进行排除重复数据的实现代码
Jun 08 PHP
fleaphp常用方法分页之Pager使用方法
Apr 23 PHP
PHP多个版本的分析解释
Jul 21 PHP
php实现天干地支计算器示例
Mar 14 PHP
php过滤敏感词的示例
Mar 31 PHP
图解找出PHP配置文件php.ini的路径的方法
Aug 20 PHP
ThinkPHP模型详解
Jul 27 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
Aug 01 PHP
PHP实现的统计数据功能详解
Dec 06 PHP
YII框架中搜索分页jQuery写法详解
Dec 19 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
PHP实现文件上传与下载实例与总结
Mar 13 #PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
Mar 11 #PHP
PHP批量去除BOM头内容信息代码
Mar 11 #PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 #PHP
php实现无限级分类查询(递归、非递归)
Mar 10 #PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 #PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 #PHP
You might like
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
javascript replace()正则替换实现代码
2010/02/26 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
vue进入页面时滚动条始终在底部代码实例
2019/03/26 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
Python程序设计入门(3)数组的使用
2014/06/16 Python
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
Python读写unicode文件的方法
2015/07/10 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
python实现连续图文识别
2018/12/18 Python
python实现杨氏矩阵查找
2019/03/02 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
python matplotlib拟合直线的实现
2019/11/19 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
营销总经理的岗位职责
2013/12/15 职场文书
优乐美广告词
2014/03/14 职场文书
社会实践的活动方案
2014/08/22 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
职称评定个人总结
2015/03/05 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
杨善洲电影观后感
2015/06/04 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python