PHP无限极分类常用五种实现方式:一、递归构建嵌套数组;二、引用方式一次性构建;三、SplFixedArray预分配空间;四、JSON路径字符串辅助存储;五、对象化节点模型存储。

如果需要在PHP中实现无限极分类功能,通常需将具有父子关系的分类数据组织为嵌套数组结构。以下是几种常见的存储方式及其实现步骤:
一、递归构建嵌套数组
该方法通过递归遍历原始扁平数组,依据parent_id字段逐层查找子节点并组装为多维嵌套结构。适用于数据库查询结果为单层记录、含id和parent_id字段的场景。
1、定义一个空数组用于存放最终的树形结构。
2、编写递归函数,接收当前层级的父ID(初始为0或指定根ID)作为参数。
立即学习“PHP免费学习笔记(深入)”;
3、遍历原始数据,筛选出所有parent_id等于当前父ID的记录。
4、对每个匹配记录,将其添加到结果数组,并调用自身传入该记录的id作为新父ID。
5、将子节点数组赋值给当前节点的children键。
二、引用方式一次性构建
利用PHP变量引用特性,在单次循环中完成父子节点关联,避免重复遍历,性能优于递归法。要求原始数据已按id顺序排列或可索引访问。
1、创建一个空数组$tree用于保存根节点,另建一个引用数组$refs用于快速定位各节点。
2、遍历原始数据,为每条记录创建一个新数组,并将其同时存入$tree(当parent_id为0时)和$refs[id]中。
3、若当前记录的parent_id不为0,则将当前记录追加到$refs[parent_id]['children']中。
4、确保每条记录初始化时包含children键且值为空数组,防止后续追加失败。
三、使用SplFixedArray预分配空间
针对大数据量分类(如万级节点),可借助SplFixedArray提升内存效率与访问速度。适用于已知最大ID范围且ID连续性较高的情况。
1、根据原始数据中最大id确定SplFixedArray长度,并初始化为null。
标签: php js json go 大数据 栈 递归函数 排列
还木有评论哦,快来抢沙发吧~