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产品图添加背景

相关推荐
CTA量化套保20 小时前
近期零基础量化学习:先分阶段,再用 AI 检查缺口
人工智能·python
清水白石00821 小时前
Python 死锁排查全攻略:从线程卡死到锁依赖定位与工程化修复
linux·网络·python
杨运交21 小时前
[060][调度模块]Redisson vs Redis 原生锁:两种分布式锁实现深度对比
数据库·redis·分布式
FungLeo21 小时前
Node 后端实战 · 列表查询到底怎么写?一个通用 DSL 封装,过滤分页排序一次搞定
数据库·node.js·serverless·dsl 封装·通用列表查询
Elias不吃糖21 小时前
Langfuse 入门:Trace、Prompt、Dataset、Experiment、Evaluator
前端·python·prompt·langfuse
TechWayfarer21 小时前
批量查IP归属地,在线API、脚本、离线库怎么选?三种方案实测对比
网络·python·网络协议·tcp/ip
抓蛙师21 小时前
多租户 tenant_id SQL 注入漏洞分析与应急响应报告
数据库·sql
ACP广源盛1392462567321 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 MoE 私有化部署下 GSV2221 视频转换芯片机遇分析
大数据·数据库·人工智能
七牛开发者1 天前
为什么 Go 很适合 AI 辅助开发?
数据库·人工智能·python·elasticsearch·log4j
河南凹凸环境艺术设计1 天前
性价比高的民宿酒店设计企业
大数据·人工智能·python