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

如何用foreach循环实现类似array_merge_recursive的按键分组合并数组

用foreach循环实现数组按键分组合并

没问题,我来帮你搞定这个需求!你想要把多个单键值对的数组合并成按相同键分组的多维数组,用foreach完全可以实现,思路其实很简单:

  1. 先初始化一个空的结果数组,用来存放最终分组好的数据
  2. 遍历你现有的每个小分组数组
  3. 取出每个小数组里的键和对应的值,把值追加到结果数组对应键的子数组中

具体代码实现

// 假设你的原始数组是这样的
$mrh = [
    [2 => 4],
    [2 => 5],
    [3 => 7],
    [3 => 8],
    [3 => 10]
];

// 初始化结果数组
$result = [];

// 遍历每个分组
foreach ($mrh as $group) {
    // 取出当前分组的键(因为每个group只有一个键值对,所以取第一个键)
    $key = array_key_first($group);
    // 取出对应的值
    $value = $group[$key];
    
    // 如果结果数组里还没有这个键,先初始化一个空数组
    if (!isset($result[$key])) {
        $result[$key] = [];
    }
    // 把值追加到对应键的子数组里
    $result[$key][] = $value;
}

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

运行结果

这段代码执行后,输出就是你期望的格式:

Array
(
    [2] => Array
        (
            [0] => 4
            [1] => 5
        )

    [3] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 10
        )

)

补充:关于array_merge_recursive()的用法

如果你想用array_merge_recursive()来实现,其实也很简单,只需要把这些小数组作为参数传进去就行:

$result = array_merge_recursive(...$mrh);
print_r($result);

这个写法会得到和foreach实现完全一样的结果,不过既然你想搞懂foreach的实现方式,上面的代码应该能帮你清晰理解整个分组合并的逻辑~

内容的提问来源于stack exchange,提问作者Onur Çiçek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:55:38