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

PHP技术问题:如何将单元素关联数组合并为分组子数组?

解决PHP数组分组合并的问题

嘿,我完全懂你遇到的问题了!你的循环逻辑出了点小纰漏——每次外层循环都会把整个$feild_data数组完整遍历一遍,导致$post[$i]里的键值对会被后续遍历到的元素不断覆盖,最后两次循环都只留下了最后一组(blue那组)的数据,自然就重复了。

错误原因拆解

你的代码里,外层循环跑2次,每次循环都遍历全部6个元素:

  • 第一次循环时,先给$post[0]['term_title']赋值black,接着赋值color_quantity=2、color_price=22,但之后又遇到了term_title=blue,直接把之前的black覆盖成了blue,后续的color_quantity=3、color_price=33也跟着覆盖掉之前的值,最后$post[0]就变成了blue那组。
  • 第二次循环同理,再次遍历全部元素,结果$post[1]也被改成了blue那组。

正确的解决方案

因为你的原数组是每3个元素为一组(term_title→color_quantity→color_price),我们可以针对性地分组合并:

方法1:步长为3的for循环(直接高效)

// 你的原始数据数组
$feild_data = [
    ['term_title' => 'black'],
    ['color_quantity' => 2],
    ['color_price' => 22],
    ['term_title' => 'blue'],
    ['color_quantity' => 3],
    ['color_price' => 33]
];

$post = [];
// 每3个元素为一组,循环步长设为3
for ($i = 0; $i < count($feild_data); $i += 3) {
    // 合并当前组的三个子数组
    $post[] = array_merge(
        $feild_data[$i],
        $feild_data[$i+1],
        $feild_data[$i+2]
    );
}

print_r($post);

方法2:用array_chunk分组后合并(更灵活)

如果以后每组的元素数量可能变化,用array_chunk会更方便:

$feild_data = [
    ['term_title' => 'black'],
    ['color_quantity' => 2],
    ['color_price' => 22],
    ['term_title' => 'blue'],
    ['color_quantity' => 3],
    ['color_price' => 33]
];

// 把原始数组切成每3个元素一组的二维数组
$groups = array_chunk($feild_data, 3);
$post = [];

foreach ($groups as $group) {
    $mergedGroup = [];
    // 合并当前组内的所有子数组
    foreach ($group as $item) {
        $mergedGroup = array_merge($mergedGroup, $item);
    }
    $post[] = $mergedGroup;
}

print_r($post);

两种方法运行后都会得到你想要的结果:

Array
(
    [0] => Array
        (
            [term_title] => black
            [color_quantity] => 2
            [color_price] => 22
        )

    [1] => Array
        (
            [term_title] => blue
            [color_quantity] => 3
            [color_price] => 33
        )

)

内容的提问来源于stack exchange,提问作者M. Ferdosiyan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:53:13