php+mysql网站无限级栏目分类-递归获取树形结构函数
如果网站采用了无限级栏目结构,我们可以将网站所有栏目获取出来组成一个树形结构。
数据库结构:

函数代码:
//获得指定文章分类的子分类组成的树形结构
function cateTree($pid=0,$level=0){
$cate=M('cate');
$array=array();
$tmp=$cate->where("pid='%d'",$pid)->select();
if(is_array($tmp)){
foreach($tmp as $v){
$v['level']=$level;
$array[count($array)]=$v;
$sub=cateTree($v['id'],$level+1);
if(is_array($sub))$array=array_merge($array,$sub);
}
}
return $array;
}
效果[print_r(cateTree(0))]:
Array
(
[0] => Array
(
[id] => 1
[catename] => 测试分类
[pid] => 0
[status] => 0
[level] => 0
) [1] => Array
(
[id] => 5
[catename] => 二级分类
[pid] => 1
[status] => 0
[level] => 1
) [2] => Array
(
[id] => 7
[catename] => 三级分类2
[pid] => 5
[status] => 0
[level] => 2
) [3] => Array
(
[id] => 2
[catename] => 测试分类
[pid] => 0
[status] => 0
[level] => 0
) [4] => Array
(
[id] => 4
[catename] => 又来测试
[pid] => 0
[status] => 0
[level] => 0
) [5] => Array
(
[id] => 6
[catename] => 二级分类二
[pid] => 4
[status] => 0
[level] => 1
) [6] => Array
(
[id] => 8
[catename] => 三级测试
[pid] => 6
[status] => 0
[level] => 2
)
)
其中level表示其层级。
格式化输出效果:

方法仅供参考,有人说递归查询效率不好,其实在实际应用过程中我们可以把查询出来的内容放入缓存,然后修改栏目信息的时候更新缓存,不需要每次都来查询数据库。
php+mysql网站无限级栏目分类-递归获取树形结构函数的更多相关文章
- destoon7.0后台栏目分类一键获取所有栏目拼音目录
近期研究DT,从DT4.0一直研究到DT7.0,总算也有些心得.最近重新开发设计了一个信息资讯站点:http://www.xuetong365.com/ 废话不多说,上教程 用于DESTOON7.0系 ...
- php mysql实现栏目分类递归
header("content-type:text/html;charset=utf-8"); $dbhost = "localhost"; // 数据库主 ...
- PHP递归获得树形菜单和遍历文件夹下的所有文件以及子文件夹
PHP递归获得树形菜单和遍历文件夹下的所有文件以及子文件夹 一.使用递归获取树形菜单 数据表category(id,name,parent_id) <?php class category{ / ...
- PHP无限级分类-递归(不推荐)
[http://www.helloweba.com/view-blog-204.html] 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢? ...
- Think PHP递归获取所有的子分类的ID (删除当前及子分类)
递归获取所有的子分类的ID: //递归获取所有的子分类的ID function get_all_child($array,$id){ $arr = array(); foreach($array as ...
- PHP.34-TP框架商城应用实例-后台10-商品分类-需求分析、创建无限级商品分类,递归
商品管理需求分析 1.实现商品无限级分类管理[类似京东三级分类] 2.添加商品时要指定商品属于一个主分类和多个扩展分类[扩展分类可以是其他主分类] 3.商品列表中可以根据分类搜索商品 a) 搜索一个分 ...
- C#无限级分类递归显示示例
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RoleDemo20150305 ...
- 【吐血分享】SQL Server With As 递归获取层级关系数据
纯洁的一周又开始了,今天看到一则新闻,笑尿了,和袁友们一起娱乐下 最近两月在做基于Saas模式的人力资源管理产品,平常数据库设计我经常会遇到如下需求场景: 以前商城类网站在设计类型表的时候,设计成单表 ...
- PHP 实现无限极栏目分类
首先,创建一个DB CREATE TABLE IF NOT EXISTS `class` ( `id` mediumint(6) NOT NULL AUTO_INCREMENT, `title` va ...
随机推荐
- C# 自定义exe引用的dll路径
MSDN原文:https://msdn.microsoft.com/library/twy1dw1e(v=vs.100).aspx <runtime> 的 <assemblyBind ...
- MAC OS X常用命令总结
附录:UNIX常用命令 ============================================================================ 1. cd ...
- 转载Verilog乘法器
1. 串行乘法器 两个N位二进制数x.y的乘积用简单的方法计算就是利用移位操作来实现. module multi_CX(clk, x, y, result); input clk; input [7: ...
- AtCoder Regular Contest 077 被虐记&题解
直到\(7:58\)才知道今天\(8:00\)有\(AtCoder\)的菜鸡来写题解啦. C - pushpush 题目: 给定一个长为\(n\)的序列,第\(i\)次操作做如下的事 : 将\(a_i ...
- C#反射 -- 基础
两个现实中的例子:1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况.这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时 ...
- 调用 SSPI 失败,请参见内部异常 解决方法
2017-11-12 12:49:53:706] OnServerConnectionAvailable error : System.Security.Authentication.Authenti ...
- 浪潮各机型管理芯片BMC IP(智能平台管理接口)设置
NF5240m3/NF5140m3/NF5280m3/SA5212H2/NP5540M3NF5270M3/NF5170M3/NF8420m3 IPMI主板集成管理芯片BMC IP 设置开机按DEL键进 ...
- (转)android - anim translate中 fromXDelta、toXDelta、fromYDelta、toXDelta属性
2012-03-23 15:51 16144人阅读 评论(5) 收藏 举报 android <set xmlns:android="http://schemas.android.com ...
- android生命周期参考
public class ActivityDemo extends Activity { private static final String TAG = "ActivityDemo&qu ...
- zabbix监控的配置
ZABBIX监控的操作步骤有两个! 首先登录到zabbix 的主界面在configuration---host---create host在如上的host 创建界面中 主要是输入被监测的server的 ...