博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ecshop重写get_categories_tree函数,
阅读量:6695 次
发布时间:2019-06-25

本文共 2123 字,大约阅读时间需要 7 分钟。

ecshop在分类超过500的时候,因递归里查询数据库,造成数据连接超时,故重写

 

/** * 获得指定分类同级的所有分类以及该分类下的子分类 * * @access  public * @param   integer     $cat_id     分类编号 * @return  array * @author Abner On by 2018-02-28 * 因原来使用递归查询分类数据,造成的mysql链接过多,故使用此方式 */function get_categories_tree( $cat_id = 0 ){    if ( 0 < $cat_id )    {        $sql = "SELECT parent_id FROM {$GLOBALS['ecs']->table('category')} WHERE cat_id='{$cat_id}' ";        $parent_id = $GLOBALS['db']->getOne( $sql );    }    else    {        $parent_id = 0;    }        $sql = "SELECT cat_id as id,cat_name as name, parent_id,is_show FROM {$GLOBALS['ecs']->table('category')} WHERE   is_show = 1 ORDER BY sort_order ASC, cat_id ASC";        $data = $GLOBALS['db']->getAll( $sql );    $tree = get_child_tree($data, $parent_id);    return $tree;}/** * 将标准二维数组换成树与v1.0类似 * @param  array  $list   待转换的数据集 * @param  array  $parent_id   父级id号 * @param  string  $pk 唯一标识字段 * @param  string  $pid    父级标识字段 * @param  string  $child  子集标识字段 * return  array * @author Abner On by 2018-02-28 * 因原来使用递归查询分类数据,造成的mysql链接过多,故使用此方式 */function get_child_tree( $list, $parent_id=0, $pk='id', $pid='parent_id', $child='cat_id' ){    // 创建Tree    $tree = array();    if(is_array($list))    {        // 创建基于主键的数组引用        $refer = array();        foreach ($list as $key => $data)        {            $refer[$data[$pk]] =& $list[$key];        }                foreach ($list as $key => $data)        {            // 判断是否存在parent            $parentId =  $data[$pid];            if ($parent_id == $parentId)            {                $list[$key]['url'] = build_uri( "category", array("cid" => $list[$key]['id']), $list[$key]['name'] );                $tree[] =&$list[$key];            }            else            {                if (isset($refer[$parentId]))                {                    $parent =&$refer[$parentId];                    $list[$key]['url'] = build_uri( "category", array("cid" => $list[$key]['id']), $list[$key]['name'] );                    $parent[$child][] =&$list[$key];                }            }        }    }    return $tree;}

  

转载于:https://www.cnblogs.com/Abner3721/p/8483913.html

你可能感兴趣的文章
javascript闭包传参和事件的循环绑定
查看>>
gbk字库音序对照表
查看>>
AutoCAD快捷键大全(按字母分类检索)
查看>>
spring中的DisposableBean和InitializingBean,ApplicationContextAware的用法
查看>>
java里字节与字符的区别
查看>>
兼容性,float
查看>>
6 适配器模式(Adapter)
查看>>
一、性能测试的八大类--转载
查看>>
js中时间戳转化成时间格式
查看>>
redis的安全问题
查看>>
spark编译安装 spark 2.1.0 hadoop2.6.0-cdh5.7.0
查看>>
反射简化switch语句
查看>>
WebBrowser中html元素如何触发winform事件
查看>>
c++ 类与对象
查看>>
ASP.Net MVC OA项目笔记<四>
查看>>
echarts图类型设置
查看>>
让博客园自动生成目录
查看>>
深度优先搜索(DFS)
查看>>
get dc app
查看>>
form 表单
查看>>