Php 数组合并两个具有不同项数的数组,其中存在匹配的productid

Php 数组合并两个具有不同项数的数组,其中存在匹配的productid,php,arrays,merge,Php,Arrays,Merge,我正在尝试合并我拥有的两个数组,以便最终得到一个数组。以下是我的第一个阵列的示例: Array ( [0] => Array ( [name] => Name1 [price] => 237.00 [colour] => Blue [image] => http:............. [url] => http:

我正在尝试合并我拥有的两个数组,以便最终得到一个数组。以下是我的第一个阵列的示例:

Array
(
    [0] => Array
        (
            [name] => Name1
            [price] => 237.00
            [colour] => Blue
            [image] => http:.............
            [url] => http:.............
            [productid] => 7740792
        )

    [1] => Array
        (
            [name] => Name2
            [price] => 87.00
            [colour] => Mauve
            [image] => http://.......
            [url] => http://.......
            [productid] => 7638070
        )
下面是我的第二个数组中的一个示例:

Array
(
    [productId] => 7740792
    [productCode] => 1019534
    [variants] => Array
        (
            [0] => Array
                (
                    [VariantID] => 7740915
                    [isInStock] => 1
                )

            [1] => Array
                (
                    [VariantID] => 7740906
                    [isInStock] => 1
                )

            [2] => Array
                (
                    [VariantID] => 7740916
                    [isInStock] => 1
                )

            [3] => Array
                (
                    [VariantID] => 7740923
                    [isInStock] => 1
                )

            [4] => Array
                (
                    [VariantID] => 7740934
                    [isInStock] => 1
                )

            [5] => Array
                (
                    [VariantID] => 7740922
                    [isInStock] => 1
                )

            [6] => Array
                (
                    [VariantID] => 7740933
                    [isInStock] => 1
                )

            [7] => Array
                (
                    [VariantID] => 7740942
                    [isInStock] => 1
                )

        )

)
Array
(
    [productId] => 7638070
    [productCode] => 1004120
    [variants] => Array
        (
            [0] => Array
                (
                    [VariantID] => 7638099
                    [isInStock] => 1
                )

            [1] => Array
                (
                    [VariantID] => 7638121
                    [isInStock] => 1
                )

            [2] => Array
                (
                    [VariantID] => 7638117
                    [isInStock] => 1
                )

            [3] => Array
                (
                    [VariantID] => 7638126
                    [isInStock] => 1
                )

            [4] => Array
                (
                    [VariantID] => 7638131
                    [isInStock] => 1
                )

            [5] => Array
                (
                    [VariantID] => 7638092
                    [isInStock] => 1
                )

            [6] => Array
                (
                    [VariantID] => 7638135
                    [isInStock] => 1
                )

            [7] => Array
                (
                    [VariantID] => 7638091
                    [isInStock] => 1
                )

        )

)
我想做的是得到一个如下所示的数组:

Array
(
    [0] => Array
        (
            [name] => Name1
            [price] => 237.00
            [colour] => Blue
            [image] => http:.............
            [url] => http:.............
            [productid] => 7740792

            [productId] => 7740792 
            [productCode] => 1004120
                  [variants] => Array
        (
            [0] => Array
                (
                    [VariantID] => 7638099
                    [isInStock] => 1
                )

            [1] => Array
                (
                    [VariantID] => 7638121
                    [isInStock] => 1
                )

            [2] => Array
                (
                    [VariantID] => 7638117
                    [isInStock] => 1
                )

            [3] => Array
                (
                    [VariantID] => 7638126
                    [isInStock] => 1
                )

            [4] => Array
                (
                    [VariantID] => 7638131
                    [isInStock] => 1
                )

            [5] => Array
                (
                    [VariantID] => 7638092
                    [isInStock] => 1
                )

            [6] => Array
                (
                    [VariantID] => 7638135
                    [isInStock] => 1
                )

            [7] => Array
                (
                    [VariantID] => 7638091
                    [isInStock] => 1
                )

我希望这是有道理的。我已经尝试过数组合并,但这不起作用,因为数组中的项目数不同。我正在学习PHP,很抱歉,如果已经回答了这个问题,但我无法将回答中的其他代码应用到我的案例中。

如果您能够设法将产品id作为变量数组的键,那么它将是快速而简单的:

for ($j = 0; $j <= count($names); $j++) {
    if (array_key_exists($names[$j]['productId'],$variants) {
      $names[$j][variants] = $variants[$names[$j]['productId']]['variants'];
    }
}
对于($j=0;$j请尝试以下操作:

foreach($second_array as $k => $v){
    $key = array_search($v['productId'], array_column($first_array, 'productid'));
    if($key !==false){
         $newArray[$k] = array_merge($second_array[$k], $first_array[$key]);
    }
}
var_dump($newArray);

您忘记了
name2
,它是结果中的变体-错误猜测?我刚刚注意到此代码可以工作,但现在我的第二个数组中有两个以上的项是(“isInStock”)(variantId)(size),但该代码只允许我合并两个项。它删除了(size)钥匙。有什么帮助吗?@adamp,如果你有第三把钥匙,也就是尺寸,我想没有问题,请检查这个——工作正常
foreach($second_array as $k => $v){
    $key = array_search($v['productId'], array_column($first_array, 'productid'));
    if($key !==false){
         $newArray[$k] = array_merge($second_array[$k], $first_array[$key]);
    }
}
var_dump($newArray);