PHP 多维数组中按唯一 range 值映射为从 0 开始的连续序号

张开发
2026/4/19 2:03:31 15 分钟阅读

分享文章

PHP 多维数组中按唯一 range 值映射为从 0 开始的连续序号
本文介绍如何将多维数组中重复出现的 range 字段值统一替换为基于其首次出现顺序的、从 0 开始的整数序号如相同 range → 相同序号并提供高效、可复用的 PHP 实现方案。 本文介绍如何将多维数组中重复出现的 range 字段值统一替换为基于其首次出现顺序的、从 0 开始的整数序号如相同 range → 相同序号并提供高效、可复用的 php 实现方案。在处理来自数据库查询或 API 响应的多维数组时常遇到某字段如 range存在重复 ID 的情况。但业务逻辑可能要求将其转换为「语义化序号」——即每个唯一 range 值对应一个从 0 开始递增的整数索引且相同原始值必须映射到同一序号保持一致性。这本质上是一个分组编号group numbering问题而非简单去重或重排键名。核心思路是先提取所有 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 值去重并保持原始顺序array_unique 保留首次出现键$uniqueRanges array_unique(array_column($array, range));// 步骤 2重置键为连续数字索引0, 1, 2...$indexedRanges array_values($uniqueRanges);// 步骤 3翻转数组构建 [原始值 序号] 映射表$rangeToIndex array_flip($indexedRanges);// 步骤 4遍历原数组用映射表更新 range 字段$result array_map(function ($item) use ($rangeToIndex) { $item[range] $rangeToIndex[$item[range]] ?? 0; // 安全兜底 return $item;}, $array);print_r($result);?? 输出结果立即学习“PHP免费学习笔记深入” 腾讯小微 基于微信AI智能对话系统打造的智能语音助手解决方案

更多文章