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);