php算法结构,PHP递归算法实现无限分类 - YangJunwei
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相关推荐
- php递归处理数组,PHP递归实现无限分类数组处理
PHP递归实现无限分类数组处理 1,php递归算法实现无限分类 递归算法对无限分类的数组进行处理,分两种情况, 一种树状展示(数组包含子数组), 一种非树状展示(子类按照顺序排在父类的下面,不出现数组 ...
- 左右值无限分类实现算法
转:左右值无限分类实现算法 左右值无限分类实现算法 一.引言 产品分类,多级的树状结构的论坛,邮件列表等许多地方我们都会遇到这样的问题:如何存储多级结构的数据?在PHP的应用中,提供后台数据存储的通常 ...
- c++遍历文件夹下的文件_算法面试|开发者必备|使用递归函数进行无限分类及文件夹遍历...
适合的读者:学生:初级程序员 前言 程序设计本质上是为了解决生产中的问题,而有时候我们面临的问题无法用有限的数学公式来解决,比如树形目录.无限分类等等,类似这种问题,用递归函数来解决就方便多了. 那什 ...
- 基于系统数据过滤权限设计之----lft, rgt的无限分类算法
系统权限设计中的一般常见会有: 用户表 角色表 用户与角色关联表 资源表 角色与资源关联表. 当然这里介绍是笼统的,有些系统中会有用户组表或者角色组表,甚至为了把菜单资源和按钮资源分开,也创建单独的表 ...
- 关于一个无限分类的多选,单选相关的控件
最近在一个项目中需要用到无限分类的平铺多选,单选这些功能,查了一些资料,结果大都是一些用IFrame这样的东西做的,虽然用起来直观,但本人更喜欢集成控件形式的,于是抽了一些时间做了一个.思路是利用控件 ...
- php mysql 分类_php+mysql实现无限分类实例详解
本文实例讲述了php+mysql实现无限分类的方法.分享给大家供大家参考.具体分析如下: 1.数据库通过设置父类ID来进行唯一索引,然后使用函数的递归调用实现无限分类: 2.数据库设计通过特定格式进行 ...
- php mysql无限_php+mysql实现无限分类实例详解
php+mysql实现无限分类实例详解 fenlei($arr[$i][0]); //$arr[$i][1]表示第$i+1个分类的id的值.进行递归,也就是把自己的id作为f_id参数把自己的子类 ...
- php 分类代码,php无限分类的图文代码介绍
无限分类,是指从一个最高分类开始,每个子分类都可以分出自己的若干个子分类,可以一直分下去,称为无限级分类: 比如一棵树,从一根树干开始,分出多个树枝,而这些树枝又分出其他的分支,理论上是可以无限分裂下 ...
- php分类程序,PHP无限分类实现程序_PHP教程
1.数据库通过设置父类ID来进行唯一索引,然后使用函数的递归调用实现无限分类:2.数据库设计通过特定格式进行排列,然后使用mysql查询关键函数:concat.程序实现比较简单 首先我们假设有这样的一 ...
最新文章
- 小乐乐打游戏(BFS+曼哈顿距离)
- python与excel的差别-python对Excel按条件进行内容补充(推荐)
- Android NDK JNI 的简单使用
- python输入水果数量_Python 水果统计
- oracle保存type类型,oracle type类型
- Mike Krueger 加入Mono团队
- Bitmap如何高效加载图片
- SAS 9.4 的sid问题解决方案汇总(头疼...)
- VS201-无法打开源文件hpp(或链接库文件)的解决方法
- matlab图片插值数据_Matlab中的插值函数
- 芯片数据手册下载和阅读
- 最小二乘法拟合空间直线的原理及实现
- bigboss help啊
- 人人都是架构师:分布式系统架构落地与瓶颈突破 - china-pub网上书店
- Android Apk瘦身方案1——R.java文件常量内联
- NodeJS学习:环境变量
- 【人工智能】5.不确定性推理
- EAUML日拱一卒-微信小程序实战:位置闹铃 (17)-保存和取出设定信息
- 2013年手机处理器终极指南(上)
- 如果用计算机计算带有大括弧的数学题,小学一年级数学上册图画大括号应用题doc...
热门文章
- gb28181简单实现sip信令服务器(java版基于springboot):四、sip摄像头心跳保活、推流(tcp/udp)和结束推流
- Fidder教程-数据介绍
- fiddler学习笔记
- 计算机操作系统期末复习
- 第七届力学、数学与应用物理学国际会议(ICMMAP 2023)
- 05-ubuntu安装mysql8
- 通过慕课网学习Python
- android-x86编译
- 图像预处理 mean=[0.485, 0.456, 0.406] std=[0.229, 0.224, 0.225] 的由来以及使用
- 怎么开启小米Note 3的root超级权限