PHP 多维数组中按唯一 ID 生成从 0 开始的连续序号

本文介绍如何将多维数组中重复出现的 range 值(如 336、390)统一映射为从 0 开始的紧凑整数序列(如 336→0,390→1),保持同 ID 元素序号一致,适用于分组标识、前端索引优化等场景。 本文介绍如何将多维数组中重复出现的 `range` 值(如 336、390)统一映射为从 0 开始的紧凑整数序列(如 336→0,390→1),保持同 id 元素序号一致,适用于分组标识、前端索引优化等场景。在 PHP 开发中,常需对多维数组中某一字段(如 'range')的重复值进行归一化编号------即把原始不连续、非零起始的 ID(如 336, 390, 336, 390)转换为逻辑上连续、从 0 开始的组序号(0, 0, 1, 1)。这种需求常见于数据分组渲染、Elasticsearch 聚合结果处理或前端表格按类别折叠展示等场景。核心思路是:先提取所有唯一 range 值 → 按首次出现顺序排序 → 映射为 0, 1, 2, ... 的键值对 → 批量重写原数组中的 range 字段。以下是完整、健壮的实现方案:<?php// 示例输入数据array = \[ \['range' =\> 336, 'year' =\> 2020, 'month' =\> 222\], \['range' =\> 336, 'year' =\> 2020, 'month' =\> 222\], \['range' =\> 390, 'year' =\> 2020, 'month' =\> 222\], \['range' =\> 390, 'year' =\> 2021, 'month' =\> 222\],\];// 步骤 1:提取所有 range 值,去重并重置键为连续数字(保证顺序稳定)uniqueRanges = array_values(array_unique(array_column(array, 'range')));// 步骤 2:构建映射表:range_value → sequence_indexrangeToIndex = array_flip(uniqueRanges);// 步骤 3:遍历原数组,用映射表替换 range 值result = array_map(function (item) use (rangeToIndex) { item\['range'\] = rangeToIndex$item\['range'] ?? 0; // 安全兜底 return item;}, array);print_r($result);?>? 输出结果:立即学习"PHP免费学习笔记(深入)"; Mokker AI AI产品图添加背景

相关推荐
麻雀飞吧3 分钟前
2026年期货量化入门路径:主流平台学习曲线与卡点观察
python
TechWayfarer3 分钟前
IP数据接口调用示例:社交软件如何做同城匹配与用户画像分析
python·网络协议·tcp/ip·社交电子
aqi006 分钟前
15天学会AI应用开发(二)为什么编写提示词这么重要
人工智能·python·大模型·ai编程·ai应用
_Evan_Yao6 分钟前
线性代数 + 编程:用Python实现向量和矩阵运算
python·线性代数·矩阵
曹牧9 分钟前
Oracle:UNIX时间戳
数据库·oracle·unix
XiaoLin laile13 分钟前
【无标题】
网络·数据库·人工智能
lili001218 分钟前
Claude自动修Bug配置优化与避坑指南
java·人工智能·python·bug·ai编程
逻极18 分钟前
Java 从入门到精通:核心原理、最佳实践与性能优化
java·jvm·并发编程·集合框架
Szime21 分钟前
靠谱的终端工厂采购电子元器件供应链哪家更适合研发型企业?
人工智能·python
2401_8734794026 分钟前
如何用IP离线库批量清洗订单IP,自动标注省市区?
开发语言·网络·python