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

PHP如何按数组的external_account字段值对数据进行聚合?

原有代码问题梳理

  • 冗余的双重循环:无需嵌套两次遍历原数组,单轮遍历即可完成聚合,O(n²)的时间复杂度远高于单轮遍历的O(n)
  • 数据结构拼接错误:array_push操作单独插入label和value两个独立值,而非你需要的['label' => xx, 'value' => xx]结构,直接导致data字段内容格式不符合要求
  • 变量未初始化风险:$valeur仅在if条件命中时才赋值,未命中时会抛出未定义变量的警告
  • 冗余数据插入:$data的赋值逻辑放在内层循环体内,每轮内层循环都会插入一条数据,最终会产生大量重复的无效条目
  • 遍历过程中修改原数组:遍历$result的同时unset其元素,会导致遍历异常,遗漏部分数据

正确实现代码

使用临时关联数组做聚合索引,单轮遍历即可完成需求,代码如下:

// 临时关联数组,以external_account为键做聚合索引
$temp = [];
foreach ($result as $item) {
    $account = $item['external_account'];
    // 首次遇到该账号时初始化结构
    if (!isset($temp[$account])) {
        $temp[$account] = [
            'external_account' => $account,
            'data' => []
        ];
    }
    // 向对应账号的data字段插入符合格式的条目
    $temp[$account]['data'][] = [
        'label' => $item['label'],
        'value' => $item['value']
    ];
}
// 将关联数组转为索引数组,得到最终输出
$finalResult = array_values($temp);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:54:01