加入收藏 | 设为首页 | 会员中心 | 我要投稿 长春站长网 (https://www.0431zz.com.cn/)- 媒体智能、开发者工具、运维、低代码、办公协同!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-07-15 13:19:48 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了php 无限级分类 获取顶级分类ID的相关代码,需要的朋友可以参考下。 有这样一个表,id是分类的ID,name是分类名称,pid是上级分类的ID。 现在有个分类ID,程序要找到它上级的上级的上级分类的ID,简单说就是找出顶级分类的ID。 比如新鲜水
  这篇文章主要介绍了php 无限级分类 获取顶级分类ID的相关代码,需要的朋友可以参考下。
 
  有这样一个表,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
  不得不说:真是太优雅了!连我都佩服我自己了,同事更是五体投地,痛哭流涕。
 
  因为他写了几十行循环再判断再递归的代码,被我用两行代码替换了……

(编辑:长春站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读