如何在PHP中合并首元素重复的多维数组(仅合并第二个元素)
PHP合并同一PersonID的技能数组
你可以通过遍历原始数组,以personID为键临时存储技能,最后再整理成目标格式,具体实现如下:
实现代码
<?php // 原始数据 $data = array( array(1, "Writing"), array(3, "Designing"), array(1, "Problem Solving"), array(3, "Communication"), array(5, "Writing"), array(5, "Planning and organising"), array(5, "Communication"), array(1, "Designing"), array(2, "Leadership"), array(2, "Communication"), array(2, "Designing") ); // 临时数组:以personID为键,存储对应ID和技能 $temp = []; foreach ($data as $item) { $personId = $item[0]; $skill = $item[1]; // 首次遇到该ID时,初始化数组并放入ID if (!isset($temp[$personId])) { $temp[$personId] = [$personId]; } // 将技能追加到对应ID的数组中 $temp[$personId][] = $skill; } // 提取临时数组的所有值,重置数字索引,得到目标格式 $result = array_values($temp); // 输出验证 print_r($result); ?>
代码逻辑说明
- 临时数组中转:用
$temp数组的键来唯一标识personID,避免重复处理同一用户 - 遍历收集技能:逐个读取原始数组的元素,把技能追加到对应ID的数组里
- 格式转换:通过
array_values()把以ID为键的数组转换成连续数字索引的数组,完全匹配你需要的输出格式
运行这段代码后,$result就是你要的合并后的数据结构。
内容的提问来源于stack exchange,提问作者Rashid
相关产品推荐
相关产品推荐

