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

从0到1学PHP(五):PHP 数组:高效存储与处理数据 本文聚焦 PHP 数组,详解其定义分类、基本操作及处理函数。定义上,含索引数组(数字索引)、关联数组(字符串索引)和多维数组(数组嵌套)。基本操作涵盖元素的增删改查,以及 current ()、next () 等数组指针函数的运用。还介绍了排序函数(sort () 等)、统计函数(count () 等),以及过滤与转换函数,助开发者高效管理数组数据。 阅读详情

最近正好遇到一个项目,  是有一个无限分类的内容, 需要处理成树结构.  之前一直使用的是递归的方式去处理的.  但是这种方式执行效率实在太低. 所以今天换了一个方式去处理.

下面贴上代码:

表结构:




到这里, 我想大家也看明白了,  这里没有使用PID的方式去处理的.    PS. 上面的表结构我是在网上找的. 但是我的主要要表述的是我的处理方式;

先上代码:

<?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();
if (is_array($rows))
{
	foreach ($rows as $k => $v)
	{
		$fullpath = explode('-',$v['fullpath']);
		$count = count($fullpath);
		$path = "tree";
		for ($i = 0; $i < $count; $i++)
		{
			if ($i >= 1)
			{
				$path .= "[" . $fullpath[$i] . "]['CHILDREN']";
			}
			
		}
		$arrStr = 'array(';
		foreach ($v as $key => $val)
		{
			$arrStr .= '"' .$key . '" => "' . $val . '",';
		}
		$arrStr .= ')';
		//echo ('$' . $path . '[' . $v['id'] . ']=' . $arrStr . ';' . '<br/>');
		eval('$' . $path . '[' . $v['id'] . ']=' . $arrStr . ';');
	}
			
		file_put_contents('1.txt', print_r($tree, true));
}
		//$tree['CHILDREN'][1] = array(['PROJECT_ID'] => 1, ['PID'] => 2, ....);
?>
最后的$tree就是我们所需要的数组.  这边的关键是字符串的拼接和 eval函数的使用.

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

相关推荐

简化PHP代码:无限分类数据的树形格式化实现

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

DhGrad_Bias的博客 117

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

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

y17709008817的博客 1万+

NRF24L01模块的5个常见问题及解决方案:从信号干扰到功耗优化

本文深入探讨NRF24L01无线模块在STM32开发中的5大常见问题及解决方案,包括通信距离优化、数据丢失排查、电源噪声抑制、SPI通信故障处理以及低功耗设计。通过代码示例和电路图分析,提供实用的优化策略,帮助开发者提升无线通信的稳定性和效率。

weixin_28256233的博客 226

onenote中使用markdown

onenote中使用markdown,OneMark

fengyanglian的博客 4184

iOS安全攻防:从DarkSword漏洞利用链剖析到纵深防御实践

在移动安全领域,内存破坏漏洞(如堆溢出、释放后使用)是攻击者突破系统防线、实现远程代码执行和权限提升的核心技术原理。这些漏洞利用技术通过精心构造的攻击链,能够绕过沙箱、地址空间布局随机化等安全机制,最终威胁设备内核安全,其技术价值在于揭示了系统安全架构的潜在薄弱环节。在iOS应用开发与系统防护中,理解此类攻击链对于构建有效的纵深防御体系至关重要。应用场景涵盖从安全编码、网络通信加固到运行时应用程序自保护等多个层面。本文以DarkSword工具包为例,深入拆解其利用链,并分享如何通过内存安全实践、代码签名强化

weixin_30357231的博客 479

【FPGA】AD9653设计和调试总结

基于FPGA的AD9653设计,设计思路,注意事项

weixin_41246509的博客 7591

OneNote支持Markdown:高亮代码

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

ReaderWithNoEmotion 6660

ANSYS 12.1避坑全记录:当Win7+VMware14遇到FLEXlm报错时的自救指南

本文详细介绍了在Windows 7和VMware14环境下安装和运行ANSYS 12.1时遇到的FLEXlm报错问题及其解决方案。通过虚拟机技术隔离时间同步问题,提供从环境配置到许可证管理的完整指南,帮助用户稳定运行这一老旧版本的工程仿真软件。

tt34567的博客 644

OneNote 转换为 Markdown 工具使用教程

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

gitblog_00548的博客 1322

数据挖掘在人力资源分析中的实战案例

在当今竞争激烈的商业环境中,人力资源管理对于企业的成功至关重要。有效的人力资源管理能够提高员工绩效、降低员工流失率、优化人才招聘等。而数据挖掘技术为人力资源管理提供了强大的工具,通过对大量人力资源数据的分析,可以发现潜在的规律和模式,为企业的决策提供有力支持。本文的目的是通过实际案例展示数据挖掘在人力资源分析中的具体应用,涵盖员工绩效预测、人才招聘筛选、员工流失分析等多个方面。通过详细的案例分析,帮助读者理解数据挖掘技术在人力资源管理中的实际操作和应用价值。

移动开发前沿的博客 489

使用 MATLAB/Simulink + Deep Learning Toolbox,构建一个基于LSTM的电网负荷预测模

本文介绍了一个基于Simulink和深度学习的智能电网负荷预测与调度建模方法。通过LSTM神经网络构建负荷预测模型,将历史负荷、天气、日期等特征作为输入,预测未来24小时负荷。然后将训练好的模型集成到Simulink仿真系统中,结合发电单元模型和经济调度逻辑,实现预测驱动的电力调度优化。实验结果表明,该方法预测误差在2.5%-4.0%之间,相比传统调度方式可降低15%-25%的运行成本。文章详细展示了从数据准备、特征工程、模型训练到系统集成的完整流程,为智能电网中AI技术的应用提供了实用参考。

amy_mhd的博客 171

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

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

gitblog_00050的博客 975

Loki 分布式日志中心服务

分布式日志中心 Loki + Promtail + Grafana

原名又逢乱世。不要放下学习的脚步,毕竟比天天打牌、钓鱼、打游戏更能从内在充实自己。 2353

php无限分类之网站导航

php无限分类之网站导航

qq_42137846的博客 779

自学 ABAP 和自学 SAP 的差别

有朋友在我的 ABAP 学习教程里留言: > 自学SAP是不是都要搭建虚拟服务器,然后自己去官网下载新版本SAP就可以吗 对于初学者,我们要搞清楚 ABAP 和 SAP 的区别。 ABAP 是一门编程语言,SAP 首先是德国软件公司的名称,也代表这家公司开发的一系列软件。SAP 公司开发的软件,我们有时也称产品,其功能能满足客户一个或者多个领域的业务需求。这些不同领域,我们也称为不同的业务模块,比如 ERP,CRM,SRM,HR 等等。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 6862

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

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

weixin_31951365的博客 1826

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

本方承接上我的上一篇文章, 上一篇说的是高效的去处理一个无限级数. 当时我用的方法是处理成字符串, 拼接后再eval处理. 那么本文再讲述另外一种处理方式.  申明一下.  这种方法不是我自己想到的, 是我在讲了之前那种方法后, 一个同事想到后和我分享的. 我觉得好的东西, 应该拿到网络上来分享一下.    好的, 言归正转: 数据存储结构可以和之前的一样.  这种方法的核心是使

Bottle 的专栏 828

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

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

weixin_39619170的博客 148

PHP 中的数组:PHP 数组

在 PHP 中,数组是一种功能强大且常用的数据结构,可以在单个变量名称下存储值或元素的集合。数组可以包含多种数据类型,例如整数、字符串、浮点数,甚至其他数组,使其成为处理和操作数据的多功能工具。了解 PHP 中的数组对于任何想要高效处理数据集合的开发人员来说都是必不可少的。此外,PHP 提供了许多内置的数组函数,可用于以各种方式对数组数据进行排序、过滤和操作。

新华编程特战队 1345

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

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

weixin_42566072的博客 132

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

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

让编程改变世界 1859

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

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

谦进 5545

【PHP】无限分类

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

杨森源的博客 1678

php分类制作,PHP无限分类制作及实例完整下载

有了PHP无限分类, 我们WEB平台设计开发中, 就无需再进行多次手动写代码, 多次建表, 效率低下, 使用也及其不方便, 这里为了PHP程序开发者的学习及工作使用方便, 给大家制作了完整的PHP无限分类分享及实例下载, 好了, 废话不多说, 直接说制作过程及使用方法.1. 建设数据库表: sortclass 表名字段如下:2. 文件结构如下:3. 显示效果如下[index.php]:调...

weixin_42470196的博客 174

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

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

DA6328的博客 146
上一篇: PHP使用ORACLE 数据库时的乱码问题
下一篇: 无限分类存储及PHP高效展现数组处理(二)
Bottle.He
博客等级 码龄14年 3粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值