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


函数代码:

//获得指定文章分类的子分类组成的树形结构
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网站无限级栏目分类-递归获取树形结构函数的更多相关文章

  1. destoon7.0后台栏目分类一键获取所有栏目拼音目录

    近期研究DT,从DT4.0一直研究到DT7.0,总算也有些心得.最近重新开发设计了一个信息资讯站点:http://www.xuetong365.com/ 废话不多说,上教程 用于DESTOON7.0系 ...

  2. php mysql实现栏目分类递归

    header("content-type:text/html;charset=utf-8"); $dbhost = "localhost";   // 数据库主 ...

  3. PHP递归获得树形菜单和遍历文件夹下的所有文件以及子文件夹

    PHP递归获得树形菜单和遍历文件夹下的所有文件以及子文件夹 一.使用递归获取树形菜单 数据表category(id,name,parent_id) <?php class category{ / ...

  4. PHP无限级分类-递归(不推荐)

    [http://www.helloweba.com/view-blog-204.html] 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢? ...

  5. Think PHP递归获取所有的子分类的ID (删除当前及子分类)

    递归获取所有的子分类的ID: //递归获取所有的子分类的ID function get_all_child($array,$id){ $arr = array(); foreach($array as ...

  6. PHP.34-TP框架商城应用实例-后台10-商品分类-需求分析、创建无限级商品分类,递归

    商品管理需求分析 1.实现商品无限级分类管理[类似京东三级分类] 2.添加商品时要指定商品属于一个主分类和多个扩展分类[扩展分类可以是其他主分类] 3.商品列表中可以根据分类搜索商品 a) 搜索一个分 ...

  7. C#无限级分类递归显示示例

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="RoleDemo20150305 ...

  8. 【吐血分享】SQL Server With As 递归获取层级关系数据

    纯洁的一周又开始了,今天看到一则新闻,笑尿了,和袁友们一起娱乐下 最近两月在做基于Saas模式的人力资源管理产品,平常数据库设计我经常会遇到如下需求场景: 以前商城类网站在设计类型表的时候,设计成单表 ...

  9. PHP 实现无限极栏目分类

    首先,创建一个DB CREATE TABLE IF NOT EXISTS `class` ( `id` mediumint(6) NOT NULL AUTO_INCREMENT, `title` va ...

随机推荐

  1. ubuntu在anaconda2下安装anaconda3环境 && 在Pycharm中配置Python3

    适合在已经装有anaconda2环境的机器上配置anaconda3环境(或在有anaconda3的环境下再配置2). 1. 下载 anaconda3 下载地址: 推荐清华镜像      https:/ ...

  2. VS2010中使用 SpecFlow + Selenium.WebDriver

    安装(VS扩展.程序包) [工具]->[扩展管理器],安装SpecFlow [工具]->[库程序包管理]->[程序包管理器控制台] PM> Install-Package Sp ...

  3. NoSQL之Redis数据库初探

    一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经 ...

  4. SpringMVC使用session实现简单登录

    1.首先为了能直观地在jsp页面体现session的内容,我使用了jstl表达式,首先在pom.xml中引入jstl的依赖 <!-- jstl所需要的依赖 --> <dependen ...

  5. 重装Oracle时出现SID已存在问题的解决办法

    重装Oracle时出现SID已存在问题的解决办法    手机打开 注意安装oracle服务器的环境,不稳定导致数据库出现问题,后果很严重! 方法如下: 1.开始->设置->控制面板-&g ...

  6. java 并发runable,callable,future,futureTask

    转载自:http://www.cnblogs.com/dolphin0520/p/3949310.html package future_call; import java.util.concurre ...

  7. bzoj 4319 cerc2008 Suffix reconstruction——贪心构造

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4319 如果字符集有 5e5 那么大的话,挨个填上去就行了.但只有26个字符,所以要贪心地尽量 ...

  8. (装)Android杂谈--禁止TimePicker控件通过keyboard输入

    Android 4.1版本以上用的是类似与ios的滚动时间控件,但是4.1以下,用的TimePicker确实通过点击上下按钮来更改时间的,虽然也提供了编辑框编辑,但是可能会超出编辑范围 如果要禁止编辑 ...

  9. React组件性能优化总结

    性能优化的思路 影响网页性能最大的因素是浏览器的重排(repaint)和重绘(reflow). React的Virtual DOM就是尽可能地减少浏览器的重排和重绘. 从React渲染过程来看,如何防 ...

  10. GO数组和切片

    数组Array 定义数组的格式:var <varName>[n]<type>,n>0 数组长度也是类型的一部分,因此具有不同长度的数组为不同类型, 不同类型的不能相互赋值 ...