求一个高效的运行快的无限查找方法。递归的很慢。求大腿

ghost_iwen 2016-04-01 06:16:27
我这里分享一个递归的。运行很慢。数据量一大。服务器的压力会很大。
public function findChild(&$arr, $id)
{
$chlids = array();
foreach ($arr as $key => $vel) {
if ($vel['pid'] == $id) {
$chlids[] = $vel;
}
}
return $chlids;
}

public function tree($id)
{
$m_stags = M('admin_stags');
$sel = $m_stags->order('id asc')->select();
$chlids = $this->findChild($sel, $id);//查找子级
if (empty($chlids)) {
return null;
}
foreach ($chlids as $key => $vel) {
$rescurTree = $this->tree($vel['id']);//查找子级是否存在子级
if ($rescurTree != null) {
$chlids[$key]['child'] = $rescurTree;
}
}
return $chlids;
}
这个方法虽然可以得到想要的结果但是页面很慢。分类超过10层进入页面耗时14.5秒。求优化。求极致。
...全文
196 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
blizzf99 2016-04-02
  • 打赏
  • 举报
回复
一次查出来然后用数组做递归呢,有试过没。
xuzuning 2016-04-01
  • 打赏
  • 举报
回复
1、就你的代码而言,有很多优化空间 2、您说 分类超过10层进入页面耗时14.5秒 那么请问你总体的数据规模有多大,是否建有关键的索引 3、高效的检索方法是采用 预排序的左右值算法(插入、摘枝 要多耗费点时间) 你是在使用 TP 吧?他的 relation 可以让你节省不少时间和空间

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧