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

PHP中如何根据指定键的相同值合并多维数组元素

解决方案

核心思路是用组合唯一键来分组:把column_name、match、coll三个字段的值拼接成一个唯一标识,以此作为临时数组的键,遍历原数组时判断该键是否存在,存在则追加text内容,不存在则存入当前元素。

实现代码

// 初始化临时数组用于分组存储
$merged = [];

foreach ($result as $element) {
    // 生成唯一分组键:用三个字段拼接确保唯一性
    $groupKey = $element['column_name'] . '|' . $element['match'] . '|' . $element['coll'];
    
    if (isset($merged[$groupKey])) {
        // 分组已存在,追加text内容(用空格分隔)
        $merged[$groupKey]['text'] .= ' ' . $element['text'];
    } else {
        // 分组不存在,直接存入当前元素
        $merged[$groupKey] = $element;
    }
}

// 把关联数组转为索引数组(和原数组结构一致)
$finalResult = array_values($merged);

// 输出验证
echo "<pre>";
print_r($finalResult);
echo "</pre>";

代码说明

  1. $groupKey用|分隔三个字段,避免字段值本身包含特殊字符导致键冲突(如果字段值可能有|,可以换其他不常用的分隔符,比如###)
  2. 第一次遇到某分组时,直接把整个元素存入临时数组;后续遇到同分组元素,只追加text字段
  3. 最后用array_values()把临时的关联数组转回索引数组,结构和原数组保持一致

验证结果

运行上述代码后,得到的结果和预期完全一致:

Array
(
    [0] => Array
        (
            [id] => 86
            [column_name] => Accommodation
            [text] => hotel staff
            [match] => 2
            [coll] => 1
        )

    [1] => Array
        (
            [id] => 91
            [column_name] => Accommodation
            [text] => marriot
            [match] => 3
            [coll] => 1
        )

)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:20:37