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

PHP如何分组相似数组行并透视分组数据生成新关联数组

数组重组问题修正方案

原代码存在的核心问题

  • 访问方式错误:原始$data的元素是关联数组结构,并非对象,不能使用->访问属性,需要改用数组下标$item['key']的形式取值
  • 组装逻辑错误:每遍历1条原始数据就向结果数组插入1条记录,既没有按同序号对齐不同类型的内容,还会生成大量字段缺失的冗余记录,最终得到9条无效数据,和预期的3条结果不符。

正确实现代码

实现思路:先按type字段将内容分组存储到对应类型的数组中,由于同类型下的内容顺序和目标结构的行顺序一一对应,最后按下标对齐三个分组的内容,逐行组装成目标结构即可。

$newdata = [];
// 初始化类型分组容器
$grouped = [
    'niche_des' => [],
    'product_des' => [],
    'trust_site' => []
];

// 第一步:按类型分组归集内容
foreach ($data as $item) {
    $type = $item['type'];
    if (array_key_exists($type, $grouped)) {
        $grouped[$type][] = $item['content'];
    }
}

// 第二步:按下标对齐重组为目标结构
$total = count($grouped['niche_des']);
for ($i = 0; $i < $total; $i++) {
    $newdata[] = [
        'niche_des' => $grouped['niche_des'][$i],
        'product_des' => $grouped['product_des'][$i],
        'trust_site' => $grouped['trust_site'][$i]
    ];
}

执行上述代码后,$newdata的结构和给出的预期结果完全一致。

如果后续数据类型动态增减、或者同类型内容数量不一致,可以在重组前先校验各分组长度,避免下标越界问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:36:27