php做项目会用到无限分类,也就是说父分类可以创建子分类,子分类可以再创建子分类,如此循环下去……

今天总结一下PHP递归算法实现无限分类的实操,好记性不如烂笔头。

递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据。

创建 Mysql 数据表

首先准备数据表 class,并插入几条示例分类信息。

字段注释:

id分类编号,自动增长;

pid所属父类id;

title分类名称。

class 数据表结构:

CREATE TABLE IF NOT EXISTS `class` (

`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '分类id',

`pid` INT(11) NOT NULL COMMENT '父类id',

`title` VARCHAR(25) COLLATE 'utf8_general_ci' NOT NULL COMMENT '分类名称',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

//插入父类:名称为 ‘新闻’,pid设为0,id自动增长可留空

INSERT INTO `class` (`id`, `pid`, `title`) VALUES (1, 0, '新闻');

//插入一级子类 ‘国内新闻’,其父类‘新闻’的id是1,所以它的pid设置为1

INSERT INTO `class` (`id`, `pid`, `title`) VALUES (2, 1, '国内新闻');

//插入二级子类 ‘图片’,其父类‘国内新闻’的id是2,所以它的pid设置为2

INSERT INTO `class` (`id`, `pid`, `title`) VALUES (3, 2, '图片');

…………

连接 MySQL

header("Content-type:text/html;charset=utf-8");

$db = new mysqli('localhost', 'root', '', 'data_name') ;

if(mysqli_connect_errno()){

echo '链接失败: '.mysqli_connect_error();

exit();

}

$db->query('set names utf8');

$result = $db->query('SELECT * FROM `class`');

PHP 无限分类

自定义函数,返回数组。

function get_array($id=0){

$sql = "select id,title from class where pid= $id";

$result = mysql_query($sql);//查询子类

$arr = array();

if($result && mysql_affected_rows()){//如果有子类

while($rows=mysql_fetch_assoc($result)){ //循环记录集

$rows['list'] = get_array($rows['id']); //调用函数,传入参数,继续查询下级

$arr[] = $rows; //组合数组

}

return $arr;

}

}

get_array() 返回数组,可以将数组转换成json格式传递给前端页面灵活运用,比如树形列表,下拉列表等。

$list = get_array(0); //调用函数

print_r($list); //输出数组

echo json_encode($list); //输出json格式数据

php算法结构,PHP递归算法实现无限分类 - YangJunwei相关推荐

  1. php递归处理数组,PHP递归实现无限分类数组处理

    PHP递归实现无限分类数组处理 1,php递归算法实现无限分类 递归算法对无限分类的数组进行处理,分两种情况, 一种树状展示(数组包含子数组), 一种非树状展示(子类按照顺序排在父类的下面,不出现数组 ...

  2. 左右值无限分类实现算法

    转:左右值无限分类实现算法 左右值无限分类实现算法 一.引言 产品分类,多级的树状结构的论坛,邮件列表等许多地方我们都会遇到这样的问题:如何存储多级结构的数据?在PHP的应用中,提供后台数据存储的通常 ...

  3. c++遍历文件夹下的文件_算法面试|开发者必备|使用递归函数进行无限分类及文件夹遍历...

    适合的读者:学生:初级程序员 前言 程序设计本质上是为了解决生产中的问题,而有时候我们面临的问题无法用有限的数学公式来解决,比如树形目录.无限分类等等,类似这种问题,用递归函数来解决就方便多了. 那什 ...

  4. 基于系统数据过滤权限设计之----lft, rgt的无限分类算法

    系统权限设计中的一般常见会有: 用户表 角色表 用户与角色关联表 资源表 角色与资源关联表. 当然这里介绍是笼统的,有些系统中会有用户组表或者角色组表,甚至为了把菜单资源和按钮资源分开,也创建单独的表 ...

  5. 关于一个无限分类的多选,单选相关的控件

    最近在一个项目中需要用到无限分类的平铺多选,单选这些功能,查了一些资料,结果大都是一些用IFrame这样的东西做的,虽然用起来直观,但本人更喜欢集成控件形式的,于是抽了一些时间做了一个.思路是利用控件 ...

  6. php mysql 分类_php+mysql实现无限分类实例详解

    本文实例讲述了php+mysql实现无限分类的方法.分享给大家供大家参考.具体分析如下: 1.数据库通过设置父类ID来进行唯一索引,然后使用函数的递归调用实现无限分类: 2.数据库设计通过特定格式进行 ...

  7. php mysql无限_php+mysql实现无限分类实例详解

    php+mysql实现无限分类实例详解 fenlei($arr[$i][0]);   //$arr[$i][1]表示第$i+1个分类的id的值.进行递归,也就是把自己的id作为f_id参数把自己的子类 ...

  8. php 分类代码,php无限分类的图文代码介绍

    无限分类,是指从一个最高分类开始,每个子分类都可以分出自己的若干个子分类,可以一直分下去,称为无限级分类: 比如一棵树,从一根树干开始,分出多个树枝,而这些树枝又分出其他的分支,理论上是可以无限分裂下 ...

  9. php分类程序,PHP无限分类实现程序_PHP教程

    1.数据库通过设置父类ID来进行唯一索引,然后使用函数的递归调用实现无限分类:2.数据库设计通过特定格式进行排列,然后使用mysql查询关键函数:concat.程序实现比较简单 首先我们假设有这样的一 ...

最新文章

  1. 小乐乐打游戏(BFS+曼哈顿距离)
  2. python与excel的差别-python对Excel按条件进行内容补充(推荐)
  3. Android NDK JNI 的简单使用
  4. python输入水果数量_Python 水果统计
  5. oracle保存type类型,oracle type类型
  6. Mike Krueger 加入Mono团队
  7. Bitmap如何高效加载图片
  8. SAS 9.4 的sid问题解决方案汇总(头疼...)
  9. VS201-无法打开源文件hpp(或链接库文件)的解决方法
  10. matlab图片插值数据_Matlab中的插值函数
  11. 芯片数据手册下载和阅读
  12. 最小二乘法拟合空间直线的原理及实现
  13. bigboss help啊
  14. 人人都是架构师:分布式系统架构落地与瓶颈突破 - china-pub网上书店
  15. Android Apk瘦身方案1——R.java文件常量内联
  16. NodeJS学习:环境变量
  17. 【人工智能】5.不确定性推理
  18. EAUML日拱一卒-微信小程序实战:位置闹铃 (17)-保存和取出设定信息
  19. 2013年手机处理器终极指南(上)
  20. 如果用计算机计算带有大括弧的数学题,小学一年级数学上册图画大括号应用题doc...

热门文章

  1. gb28181简单实现sip信令服务器(java版基于springboot):四、sip摄像头心跳保活、推流(tcp/udp)和结束推流
  2. Fidder教程-数据介绍
  3. fiddler学习笔记
  4. 计算机操作系统期末复习
  5. 第七届力学、数学与应用物理学国际会议(ICMMAP 2023)
  6. 05-ubuntu安装mysql8
  7. 通过慕课网学习Python
  8. android-x86编译
  9. 图像预处理 mean=[0.485, 0.456, 0.406] std=[0.229, 0.224, 0.225] 的由来以及使用
  10. 怎么开启小米Note 3的root超级权限