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

如何以唯一元素为键合并两个PHP数组?附示例数组

PHP合并两个同外层键的多维数组

嘿,针对你这个需求——把两个以相同唯一键为外层索引的数组合并,让每个外层键下的数组包含两个原数组的所有内层元素,我给你分享几种实用的实现方式:

方法一:循环遍历合并(灵活可控)

如果需要完全掌控合并过程,或者两个数组的外层键可能不完全一致,循环遍历是最稳妥的选择:

// 定义你的两个数组
$array1 = [
    4301 => [
        'business_unit_id' => 2,
        'no_of_invoices' => 1,
        'invoice_status_query' => 1
    ],
    4501 => [
        'business_unit_id' => 1,
        'no_of_invoices' => 2,
        'invoice_status_query' => 0
    ]
];

$array2 = [
    4301 => [
        'business_unit_id' => 2,
        'PO_to_be_Approved' => 0
    ],
    4501 => [
        'business_unit_id' => 1,
        'PO_to_be_Approved' => 0
    ]
];

$mergedArray = [];
// 获取所有存在的外层键,确保没有遗漏
$allKeys = array_unique(array_merge(array_keys($array1), array_keys($array2)));

foreach ($allKeys as $key) {
    // 取出当前键对应的两个内层数组,不存在的话用空数组代替
    $innerArray1 = isset($array1[$key]) ? $array1[$key] : [];
    $innerArray2 = isset($array2[$key]) ? $array2[$key] : [];
    // 合并内层数组,array_merge会保留所有键,重复键以后面的数组为准(这里business_unit_id值一致,不影响)
    $mergedArray[$key] = array_merge($innerArray1, $innerArray2);
}

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

这种方式的好处是,哪怕某个外层键只在其中一个数组里存在,也能被正确合并进去,不会丢失数据。

方法二:用内置函数快速合并(简洁高效)

如果确定两个数组的外层键完全对应,直接用PHP内置的array_replace_recursive函数就能一步到位:

$mergedArray = array_replace_recursive($array1, $array2);
print_r($mergedArray);

这个函数会递归地遍历数组,把第二个数组的元素合并到第一个数组中:对于相同的外层键,会合并它们的内层数组;如果有重复的内层键(比如这里的business_unit_id),会用第二个数组的值覆盖第一个数组的(不过你这里值相同,所以结果不受影响)。

另外,也可以用array_merge_recursive,但要注意:如果遇到相同的内层键,它会把值合并成一个数组,而不是替换。比如如果两个数组的business_unit_id值不同,array_merge_recursive会把它变成['business_unit_id' => [2, 2]],这通常不是我们想要的,所以array_replace_recursive更适合你的场景。

运行后得到的目标数组会是这样:

Array
(
    [4301] => Array
        (
            [business_unit_id] => 2
            [no_of_invoices] => 1
            [invoice_status_query] => 1
            [PO_to_be_Approved] => 0
        )

    [4501] => Array
        (
            [business_unit_id] => 1
            [no_of_invoices] => 2
            [invoice_status_query] => 0
            [PO_to_be_Approved] => 0
        )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:06:54