无限分类存储及PHP高效展现数组处理(二)

使用PHP数组实现无限分类的技巧 通过以上的示例代码,你可以在自己的PHP项目中轻松地实现无限分类功能,而无需依赖数据库或递归。在PHP中,我们经常需要处理无限分类的数据结构,如商品分类、菜单分类等。在上述代码中,我们遍历分类数组,并根据父级分类的ID将分类放入相应的父级分类的子分类数组中。通过以上的代码,我们成功地使用PHP数组实现了无限分类的功能,而不需要使用数据库或递归。数组的每个元素代表一个分类,其中包含一个唯一的ID和一个父级分类的ID。接下来,我们可以使用一个循环来遍历分类树,并输出分类的层级关系。则对应其父级分类的ID。 阅读详情

本方承接上我的上一篇文章, 上一篇说的是高效的去处理一个无限级数. 当时我用的方法是处理成字符串, 拼接后再eval处理. 那么本文再讲述另外一种处理方式. 

申明一下.  这种方法不是我自己想到的, 是我在讲了之前那种方法后, 一个同事想到后和我分享的. 我觉得好的东西, 应该拿到网络上来分享一下.   

好的, 言归正转: 数据存储结构可以和之前的一样. 


这种方法的核心是使用PHP的引用 . 下面直接上Code. 如果有什么不明白的, 可以回复问. - - 

<?php
mysql_connect("10.1.59.222:3306", 'root', '123456');
mysql_select_db('demo');
mysql_query("SET NAMES UTF8");

$sql = "select id, catpath as fullpath, name from category order by fullpath";

$result = mysql_query($sql);
$rows = array();
while (false !== ($row = mysql_fetch_array($result, MYSQL_ASSOC)))
{
	$row['name'] = iconv('utf-8', 'gbk', $row['name']);
	$rows[] = $row;
}
$tree = array();
$temp = array();
foreach ($rows as $k => $v)
{
	$temp[$v['id']]['id'] = $v['id'];
	$temp[$v['id']]['pid'] = $v['pid'];
	$temp[$v['id']]['name'] = $v['name'];
	$temp[$v['id']]['leaf'] = true;
}
foreach ($temp as $k => $v)
{
	if (isset($temp[$v['pid']]))
	{
		$temp[$v['pid']]['expanded'] = true;
		$temp[$v['pid']]['leaf'] = false;
		$temp[$v['pid']]['children'][] = &$temp[$v['id']];
	}
	else 
	{
		$tree[] = &$temp[$v['id']];
	}
}

unset($temp);

我想这样大家应该可以直白的看明白 . - - ,  不多说.  

简化PHP代码:无限分类数据的树形格式化实现 在每个分类前,我们根据缩进级别添加适当数量的空格,然后将分类的名称添加到结果字符串中。在每个分类前,我们根据缩进级别添加适当数量的空格,然后将分类的名称添加到结果字符串中。在PHP中,我们经常需要将无限分类数据以树形结构进行展示,并且还要考虑到分类层级的无限嵌套。通常,每个分类都包含一个唯一的标识符(ID),一个名称(Name),以及一个可选的父分类的标识符(ParentID)。通常,每个分类都包含一个唯一的标识符(ID),一个名称(Name),以及一个可选的父分类的标识符(ParentID)。 阅读详情

相关推荐

CAPL编程入门:从零开始掌握汽车通信脚本语言

本文详细介绍了CAPL编程的基础知识,从开发环境搭建到核心语法精要,再到总线通信实战和高级调试技巧。CAPL作为汽车通信脚本语言,专为CAN、LIN等网络协议设计,帮助工程师高效完成车载网络测试。通过实战案例和性能优化建议,读者可以快速掌握CAPL编程技能。

s1t2u3的博客 978

在OneNote中使用markdown(亲测可用)

前面介绍 OneMark 这款工具时,使用的 OneNote 版本为 OneNote 365(等同于 OneNote 客户端),OneMark 在 OneNote 客户端中可以正常使用,而 OneMark 在 OneNote UWP 版本上无法使用。熟悉 OneNote 的朋友,或是 OneNote 的重度用户可能都知道,OneNote 有两个版本,一个是客户端版本,一个是微软应用商店的 UWP 版本,也称作 OneNote for Windows 10。▶▶▶ 点击这里,获取OneNote客户端安装包。

y17709008817的博客 1万+

Mac本地大模型实战指南:Ollama+Metal+Apple Silicon深度优化

大语言模型(LLM)本地化部署正成为开发者关键技术能力,其核心在于推理效率、硬件适配与成本控制。Apple Silicon凭借统一内存架构(UMA)和Neural Engine,为本地LLM运行提供了独特优势;Metal加速则显著提升GPU计算吞吐,使Gemma 4、Qwen 3.5等模型在M系列Mac上实现低延迟、高精度、离线可用的工程落地。相比云端API,本地方案规避了token计费、网络依赖与数据外泄风险,特别适用于企业文档处理、实时语音分析、私有知识库检索等强隐私、低时延场景。本文聚焦Mac平台,系

weixin_33443333的博客 352

onenote中使用markdown

onenote中使用markdown,OneMark

fengyanglian的博客 4184

LK32T102 单片机 操作GPIO实现流水灯(1)

前言: LK32T10232(32位)单片机是一款专为电机控制器和数字电源开发的高性能 MCU。采Cortex-M0 内核,最高工作频率可达 72Mhz,ADC 采样速率 达 1Msps。同时具备协处理器单元可满足各种乘法、除法、移位以及各种 复杂函数运算。 LK32T102(32位)支持单电源供电,且内嵌高精度高速及低速振荡器,以及具备 多种低功耗工作模式。同时,集成了多路增强型 PWM,多通道模拟比较 器和高速运算放大器,可满足多种电机及功率控制应用,并简化系统成本。...

qq_58676187的博客 3189

STM32F407实现LwIP的MQTT客户端并连接到服务器

这个是用LwIP协议栈中自带的MQTT客户端API写成的,代码注释很详细,附带有服务端的展示。LwIP版本是2.1.2.

wait_for_STM32的博客 6394

OneNote支持Markdown:高亮代码

- markdown对我来说是伪需求,真正需要的是`高亮代码`,通过[Github/NoteHighlight2016](https://github.com/elvirbrk/NoteHighlight2016)这个开源插件可实现 - 这个插件虽然叫2016,但实测onenote 2013也是可以用的

ReaderWithNoEmotion 6660

四旋翼无人机控制算法实战:从PID到MPC的路径跟踪

本文深入探讨了四旋翼无人机控制算法的演进路径,从基础的PID控制到高级的MPC算法,详细解析了各类算法的原理、实现技巧及适用场景。通过实战案例对比分析,为开发者提供从算法选型到参数调优的全方位指导,助力提升无人机飞行控制的精度与稳定性。

weixin_29090917的博客 240

OneNote 转换为 Markdown 工具使用教程

OneNote 转换为 Markdown 工具使用教程 1. 项目介绍 本项目是一个开源项目,旨在帮助用户将 OneNote、EverNote 或其他专有笔记工具的内容转换为 Markdown 格式。Markdown 是一种轻量级标记语言,被广泛用于撰写技术文档、博客文章等。通过将笔记转换为 Markdown,用户可以更方便地在各种平台上分享和编辑内容。 2. 项目快速启动 以下是快速启动本项目的...

gitblog_00548的博客 1322

【unity小技巧】委托(Delegate)的基础使用和介绍

在Unity中,委托(Delegate)是一种用于处理方法回调的特殊类型。它允许您将方法作为参数传递给其他方法,并在需要时调用这些方法。委托在游戏开发中非常有用,特别是在事件处理、消息传递和异步操作方面。它提供了一种灵活的方式来注册和触发方法,而无需显式地知道这些方法的实现细节。个人理解:可以把委托理解为一个容器,容器里面放可以放很多函数方法。一调用委托,里面所有的函数方法都会同步被执行。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 7237

大模型性能压测全指南:从指标到实战

本文系统阐述大模型(LLM/多模态)私有化部署性能压测方案,涵盖核心指标(TTFT、TPOT、吞吐、并发、资源占用、错误率)、四类典型压测场景及工具选型(Locust、vLLM benchmark等)。强调环境隔离、参数固定与长尾延迟分析,提出瓶颈定位思路与标准化报告模板,结合伪代码示例实现流式接口精准打点,确保测试结果真实可信,助力优化模型服务稳定性与性能。

SmallBull的博客 55

探索未来笔记:将OneNote转换为Markdown

探索未来笔记:将OneNote转换为Markdown 项目介绍 在数字化的世界中,高效管理个人知识库变得日益重要。ConvertOneNote2MarkDown 是一个由SPdeValk Consultancy的Sjoerd de Valk开发的开源工具,旨在帮助用户将他们的OneNote笔记无缝迁移到Markdown格式。这个强大的PowerShell脚本充分利用了OneNote对象模型,可以将...

gitblog_00050的博客 975

飞牛NAS新增虚拟机功能,如果使用虚拟机网卡直通安装ikuai软路由(如何解决OVS网桥绑定失败以及打开ovs后无法访问飞牛nas等问题)

飞牛NAS新增虚拟机功能,如果使用虚拟机网卡直通安装ikuai软路由

XiaoqiangClub的博客 1万+

无限分类存储及PHP高效展现数组处理(一)

最近正好遇到一个项目,  是有一个无限分类的内容, 需要处理成树结构.  之前一直使用的是递归的方式去处理的.  但是这种方式执行效率实在太低. 所以今天换了一个方式去处理. 下面贴上代码: 表结构: 到这里, 我想大家也看明白了,  这里没有使用PID的方式去处理的.    PS. 上面的表结构我是在网上找的. 但是我的主要要表述的是我的处理方式; 先上代码:

Bottle 的专栏 623

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

php数组返回多条数据,php用数组返回无限分类的列表数据的代码

php用数组返回无限分类的列表数据的代码复制代码 代码如下:/*—————————————————— *///– 获取无限分类的列表数据/*—————————————————— */function get_sort ($parent_id=0,$n=-1){global $db;static $sort_list = array ();$sql = "SELECT * FROM ".$db-&g...

weixin_29385641的博客 320

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

php循环构建二维数组,php循环生成二维数组

程序中定义了二维数组arr,arr有3行4列共12个元素,程序中采用for循环语句的嵌套来计算数组中各个元素的和,并将结果保存在sum变量中,最后打印输出结果。 public ......1、 从数据库获取所有的新闻数据:PHP 脚本 从结果集中取出所有的记录:一次取一条,一条一个数组;然后将所有的记录放到一个数组 中:形成一个典型的二维数组 2、......{¥this一>htmllink...

weixin_31951365的博客 1826

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

php无限分类之网站导航

php无限分类之网站导航

qq_42137846的博客 779

php无限分类搜索代码_PHP 无限分类程序代码

无限分类多半天于数据分类时像我们新闻或软件频道可能都会有各种子类,但对这种子类我们不知道所以就得使用无限分类方法了,下面我来给大家介绍一下。第一分类(父分类)–>第二分类(子分类)–>第三分类(孙分类)这种亲缘分类越多,程序和数据库的控制就越加的复杂困难.在同一级的分类处理和控制是非常的简单的,因为只需要一个数据库来记载这一级的分类就行了,如:系统,新闻等分类,在这一级上处理是很简单的...

weixin_39619170的博客 148

PHP + MySQL 实现无限分类的2种方法

无限分类是个老话题了,PHP和MySQL中实现无限分类的思路也有许多种,本文主要介绍其中2种最巧妙的无限分类方法,一起来看看吧。 1、方法一         这种方法是很常见、很传统的一种,先看表结构: 表:category id int 主键,自增 name varchar 分类名称 pid int 父类id,默认0

让编程改变世界 1859

无限分类 mysql_实现PHP+Mysql无限分类的方法汇总

无限分类是个老话题了,来看看PHP结合Mysql如何实现。第一种方法这种方法是很常见、很传统的一种,先看表结构表:categoryid int 主键,自增name varchar 分类名称pid int 父类id,默认0顶级分类的 pid 默认就是0了。当我们想取出某个分类的子分类树的时候,基本思路就是递归,当然,出于效率问题不建议每次递归都查询数据库,通常的做法是先讲所有分类取出来,保存到PHP...

weixin_42566072的博客 132

【PHP】无限分类

无限分类,是指从一个最高分类开始,每个子分类都可以分出自己的若干个子分类,可以一直分下去,称为无限级分类;比如一棵树,从一根树干开始,分出多个树枝,而这些树枝又分出其他的分支,理论上是可以无限分裂下去的;再比如,一个家庭可以有若干个子女,我们把这些子女看做是第一级分类。而这些子女,又会各自组建自己的家庭,当他们有了自己的后代,就是第二级分类,如果每个家庭都有一个以上的子女,理论上是可以无限分裂的;在

杨森源的博客 1678

PHP获取无限分类的完整等级列表

无限分类其实描述的是成员间的上下级关系。假如一共有五个级别,针对数据描述起来就是个五维数组,这样的数组就完全没有数组的实际价值和意义。这里要讨论的是最终显示出完整的上下级关系,比如: 总经理 技术总监 项目经理A 程序员A 程序员B 项目经理B 程序员C

谦进 5545

PHP+Mysql无限分类的方法汇总

无限分类是个老话题了,来看看PHP结合Mysql如何实现。第一种方法这种方法是很常见、很传统的一种,先看表结构表:categoryid int 主键,自增name varchar 分类名称pid int 父类id,默认0顶级分类的 pid 默认就是0了。当我们想取出某个分类的子分类树的时候,基本思路就是递归,当然,出于效率问题不建议每次递归都查询数据库,通常的做法是先讲所有分类取出来,保...

DA6328的博客 146

php mysql 分类_PHP+Mysql无限分类的方法汇总

无限分类是个老话题了,来看看PHP结合Mysql如何实现。第一种方法这种方法是很常见、很传统的一种,先看表结构表:categoryid int 主键,自增name varchar 分类名称pid int 父类id,默认0顶级分类的 pid 默认就是0了。当我们想取出某个分类的子分类树的时候,基本思路就是递归,当然,出于效率问题不建议每次递归都查询数据库,通常的做法是先讲所有分类取出来,保存到PHP...

weixin_27283495的博客 147

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

无限分类,是指从一个最高分类开始,每个子分类都可以分出自己的若干个子分类,可以一直分下去,称为无限级分类;比如一棵树,从一根树干开始,分出多个树枝,而这些树枝又分出其他的分支,理论上是可以无限分裂下去的;再比如,一个家庭可以有若干个子女,我们把这些子女看做是第一级分类。而这些子女,又会各自组建自己的家庭,当他们有了自己的后代,就是第二级分类,如果每个家庭都有一个以上的子女,理论上是可以无限分裂的;...

weixin_39610724的博客 177

实现PHP+Mysql无限分类的方法汇总

无限分类是个老话题了,来看看PHP结合Mysql如何实现。 第一种方法 这种方法是很常见、很传统的一种,先看表结构 表:category id int 主键,自增 name varchar 分类名称 pid int 父类id,默认0 顶级分类的 pid 默认就是0了。当我们想取出某个分类的子分类树的时候,基本思路就是递归,当然,出于效率问题不建议每次递归都查询数据库,通常的做法是先讲

★昔梦无痕★ 870
上一篇: 无限分类存储及PHP高效展现数组处理(一)
下一篇: Linux 下使用epoll实现转发服务器的小DEMO
Bottle.He
博客等级 码龄14年 3粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值