php 无限级分类 获取顶级分类ID
有这样一个表,id是分类的ID,name是分类名称,pid是上级分类的ID。
现在有个分类ID,程序要找到它上级的上级的上级……分类的ID,简单说就是找出顶级分类的ID。
比如“新鲜水果”的ID是13,对应父类ID是5,而5的父ID是1,1没有父类,也就是顶级分类了。
以前年轻气盛不懂事,总想着用递归来查找,然后再将结果缓存来解决性能问题。
后来又试过将整个表缓存起来,再递归查找。
再后来……似乎比较少有机会遇到无限级分类……
最近有个同事问我怎么“优雅”的解决这个问题。
于是我灵机一动,就有了如下解决方案:
<?php
$sql="selectid,pidfromtablename";
//查询后将结果处理成如下数组格式
$arr=[
//id=>pid
1=>0,
//省略...
5=>1,
//省略...
13=>5
];
//建议将这数组缓存起来
$id=13;
while($arr[$id]){
$id=$arr[$id];
}
echo$id;//1
不得不说:真是太优雅了!连我都佩服我自己了,同事更是五体投地,痛哭流涕。
因为他写了几十行循环再判断再递归的代码,被我用两行代码替换了……
热门推荐
10 高温祝福语短语大全简短
11 生日留言简短祝福语大全
12 中式蛋糕开业祝福语简短
13 美丽晚霞祝福语简短句
14 鲜花卡片简短开业祝福语
15 男生打球祝福语简短霸气
16 大寿爸爸祝福语简短英文
17 嫁女儿祝福语女生简短
18 空军大学开学祝福语简短