You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现一维数组按竖线前缀分组并拼接同组后缀

合并相同前缀的竖线分隔数组元素

嘿,这个需求很常见!咱们可以用PHP轻松实现,核心思路就是先分组再拼接,具体看下面的步骤:

先明确需求

原始输入数组(PHP格式):

$originalArray = [
    '1|1', '1|2', '1|3', '1|4', '1|5', '1|6', '1|32', '1|35',
    '2|1', '2|5',
    '3|1', '3|8', '3|11', '3|13', '3|35'
];

期望输出的合并后数组:

[
    '1|1,2,3,4,5,6,32,35',
    '2|1,5',
    '3|1,8,11,13,35'
];

实现代码

// 初始化临时数组,用来按前缀分组存放后缀
$merged = [];

foreach ($originalArray as $item) {
    // 拆分每个元素为前缀和后缀
    list($prefix, $suffix) = explode('|', $item);
    
    // 如果前缀还没在临时数组里,先初始化一个空数组
    if (!isset($merged[$prefix])) {
        $merged[$prefix] = [];
    }
    
    // 将后缀添加到对应前缀的数组中
    $merged[$prefix][] = $suffix;
}

// 把分组后的数组转换成期望的格式
$result = [];
foreach ($merged as $prefix => $suffixes) {
    // 把后缀数组用逗号拼接,再和前缀用竖线连接
    $result[] = $prefix . '|' . implode(',', $suffixes);
}

// 输出结果
print_r($result);

代码解释

  1. 分组阶段:遍历原始数组,把每个元素拆分成前缀和后缀,用前缀作为临时数组的键,把所有同前缀的后缀收集到对应的数组里,完成按前缀的分组。
  2. 拼接阶段:遍历分组后的临时数组,把每个前缀和用逗号拼接后的后缀串起来,形成最终的元素格式,存入结果数组。

额外补充

如果你的原始数组里可能存在重复的后缀(比如出现两次1|2),想要去重的话,可以在添加后缀的时候做个判断:

if (!in_array($suffix, $merged[$prefix])) {
    $merged[$prefix][] = $suffix;
}

或者直接用前缀数组的键来存后缀(自动去重):

$merged[$prefix][$suffix] = $suffix;
// 拼接的时候要注意取数组的值:implode(',', array_values($merged[$prefix]))

内容的提问来源于stack exchange,提问作者4532066

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:33:04