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

如何在PHP中按CONSECUTIVO_GRUPO对多维数组进行分组

解决方案:按CONSECUTIVO_GRUPO分组重构数组

你的问题出在原代码每次循环都创建独立的分组对象,没有把同CONSECUTIVO_GRUPO的条目合并到同一分组里。要实现需求,核心思路是用CONSECUTIVO_GRUPO作为临时数组的键,聚合同组的RESPUESTAS项,最后整理成目标格式。

修正后的PHP代码

$result = [];
foreach ($rsp as $answer) {
    // 用CONSECUTIVO_GRUPO作为分组标识键
    $groupKey = $answer['CONSECUTIVO_GRUPO'];
    
    // 首次遇到该分组时,初始化基础结构
    if (!isset($result[$groupKey])) {
        $result[$groupKey] = [
            "CONSECUTIVO" => $answer['CONSECUTIVO_GRUPO'],
            "GRUPO" => $answer['ID_GRUPO'],
            "RESPUESTAS" => []
        ];
    }
    
    // 将当前条目的[CODIGO, ID_MODULO, VALOR]追加到对应分组的RESPUESTAS中
    $result[$groupKey]['RESPUESTAS'][] = [
        $answer['CODIGO'],
        $answer['ID_MODULO'],
        $answer['VALOR']
    ];
}

// 去掉临时分组键,得到纯顺序数组(不需要的话可省略此步)
$result = array_values($result);

// 若要输出JSON格式,执行以下代码
// echo json_encode($result, JSON_PRETTY_PRINT);

代码说明

  • 用CONSECUTIVO_GRUPO作为临时数组的键,确保相同分组的条目被聚合到同一对象下
  • 首次遇到某分组时,初始化该分组的CONSECUTIVO、GRUPO字段和空的RESPUESTAS数组
  • 后续同分组的条目,直接把[CODIGO, ID_MODULO, VALOR]追加到对应分组的RESPUESTAS数组里
  • 最后用array_values()重置数组索引,去掉临时分组键(如果不需要纯顺序数组可省略)

输出示例(JSON格式)

[
    {
        "CONSECUTIVO": "1",
        "GRUPO": "39",
        "RESPUESTAS": [
            ["447","20","2023-09-05"],
            // 同组其他条目...
        ]
    },
    {
        "CONSECUTIVO": "2",
        "GRUPO": "1",
        "RESPUESTAS": [
            ["94","76","..."],
            // 同组其他条目...
        ]
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:05:18