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

如何在循环中合并数组并将属性整合到同一对象中?

解决数组按radius合并属性的问题

你原来的array_merge写法只是把所有数组元素平铺成一维数组,没有按radius值聚合不同ID的属性。要实现将相同radius的对象整合到一起,我们可以通过以radius为键临时存储聚合结果的方式来处理,具体代码如下:

// 你的原始数据
$data = [
    [
        ["radius" => 0, "0004718100" => 17.42],
        ["radius" => 1, "0004718100" => 21.15],
    ],
    [
        ["radius" => 0, "0014084415" => 21.39],
        ["radius" => 1, "0014084415" => 22.74],
    ]
];

$merged = [];

// 遍历每个ID对应的分组
foreach ($data as $group) {
    // 处理分组内的每个radius条目
    foreach ($group as $item) {
        $radius = $item['radius'];
        // 如果该radius尚未初始化,先创建空数组
        if (!isset($merged[$radius])) {
            $merged[$radius] = [];
        }
        // 合并当前条目的属性到对应radius的集合中
        $merged[$radius] = array_merge($merged[$radius], $item);
    }
}

// 转换为目标格式:关联数组转索引数组,再包裹一层数组
$result = [array_values($merged)];

// 输出结果
print_r($result);

代码逻辑解释:

  • 首先用$merged数组以radius值为键,临时存储每个radius对应的合并后属性;
  • 遍历原始数据的每个分组,再遍历分组内的每个对象,将对象的属性合并到对应radius的数组中(因为每个对象的ID键唯一,不会出现覆盖问题);
  • 最后用array_values()把关联数组转成索引数组,再包裹一层数组就得到你想要的结构了。

执行这段代码后,输出结果就是:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [radius] => 0
                    [0004718100] => 17.42
                    [0014084415] => 21.39
                )

            [1] => Array
                (
                    [radius] => 1
                    [0004718100] => 21.15
                    [0014084415] => 22.74
                )

        )

)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 23:47:33