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

如何根据id值合并两个PHP数组?

PHP 根据ID合并两个数组(包含所有ID)

要实现按id合并两个数组并保留所有ID,缺失字段设为null,可以按照以下步骤操作:

1. 定义原始数组

$array1 = [
    ['id' => '1', 'color'=>'Green'],
    ['id' => '2', 'color'=>'Red'],
    ['id' => '3', 'color'=>'Blue'],
];

$array2 = [
    ['id' => '2', 'size'=>'Small'],
    ['id' => '3', 'size'=>'Medium'],
    ['id' => '4', 'size'=>'Large'],
];

2. 转换为以ID为键的关联数组

使用array_column将两个数组转换为以id作为键的结构,方便快速通过ID访问对应数据:

$keyedArray1 = array_column($array1, null, 'id');
$keyedArray2 = array_column($array2, null, 'id');

3. 获取所有唯一ID

合并两个数组的ID并去重,确保所有ID都被包含:

$allIds = array_unique(array_merge(array_keys($keyedArray1), array_keys($keyedArray2)));
// 按ID升序排序(可选,匹配示例结果的顺序)
sort($allIds);

4. 遍历ID生成最终数组

逐个处理每个ID,合并两个数组中的数据,缺失字段用null填充:

$result = [];
foreach ($allIds as $id) {
    $result[] = [
        'id' => $id,
        'color' => $keyedArray1[$id]['color'] ?? null,
        'size' => $keyedArray2[$id]['size'] ?? null,
    ];
}

最终结果

执行print_r($result)会输出:

Array
(
    [0] => Array
        (
            [id] => 1
            [color] => Green
            [size] => 
        )
    [1] => Array
        (
            [id] => 2
            [color] => Red
            [size] => Small
        )
    [2] => Array
        (
            [id] => 3
            [color] => Blue
            [size] => Medium
        )
    [3] => Array
        (
            [id] => 4
            [color] => 
            [size] => Large
        )
)

说明

  • array_column:高效将数组转换为指定键的关联数组,PHP 5.5+支持。
  • ?? null:空合并运算符,PHP 7+支持,当对应键不存在时返回null,替代繁琐的isset()判断。
  • 排序步骤可选,如果不需要ID顺序可以省略sort($allIds)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:31:06