在PHP数组中找到相同的键值,并使用更新的值将它们保存到输出数组中
我想比较PHP中的两个数组,并将它们与(array_one)在PHP数组中找到相同的键值,并使用更新的值将它们保存到输出数组中,php,arrays,json,object,Php,Arrays,Json,Object,我想比较PHP中的两个数组,并将它们与(array_one)sku,(array_two)id进行匹配。然后将结果和更新后的价格从array_two推送到output-array 这就是我使用JS做类似事情的方式。不知道如何在PHP中实现它 array_one.forEach(product => { let matchedProducts = array_two.find(old => { return product["sku"] === old[
sku
,(array_two)id
进行匹配。然后将结果和更新后的价格从array_two推送到output
-array
这就是我使用JS做类似事情的方式。不知道如何在PHP中实现它
array_one.forEach(product => {
let matchedProducts = array_two.find(old => {
return product["sku"] === old["id"];
});
if (JSON.stringify(matchedProducts) !== JSON.stringify(product)) {
console.log(matchedProducts)
}
});
Arrau\u one:
[
{
"post_id": 18,
"sku": "SNTP-UVS8P",
"price": "59"
},
{
"post_id": 17,
"sku": "TD-SKU30548",
"price": "129"
},
{
"post_id": 16,
"sku": "USBCV",
"price": ""
}
]
[
{
"id": "DFTS-P20PR",
"price": "49"
},
{
"id": "SNTP-UVS8P",
"price": "79"
},
{
"id": "SNTP-UVS8P",
"price": "49"
},
{
"id": "USBCV",
"price": "99"
},
{
"id": "KS-12SEA2",
"price": "29"
}
]
Arrau\u二:
[
{
"post_id": 18,
"sku": "SNTP-UVS8P",
"price": "59"
},
{
"post_id": 17,
"sku": "TD-SKU30548",
"price": "129"
},
{
"post_id": 16,
"sku": "USBCV",
"price": ""
}
]
[
{
"id": "DFTS-P20PR",
"price": "49"
},
{
"id": "SNTP-UVS8P",
"price": "79"
},
{
"id": "SNTP-UVS8P",
"price": "49"
},
{
"id": "USBCV",
"price": "99"
},
{
"id": "KS-12SEA2",
"price": "29"
}
]
输出
[
{
"post_id": 18,
"sku": "SNTP-UVS8P",
"price": "79" //Updated Price from Array_two
},
{
"post_id": 16,
"sku": "USBCV",
"price": "99" //Updated Price from Array_two
}
]
首先使用
array\u column()
它生成一个数组,其中id
作为键,price
作为值:
Array
(
[DFTS-P20PR] => 49
[SNTP-UVS8P] => 49
[USBCV] => 99
[KS-12SEA2] => 29
)
现在,您可以通过测试$new\u array2[sku]
来循环array1并在new\u array2中查找新价格,并查看它是否存在
$result=[];
foreach ($array1 as $value){
if( isset( $new_array2[ $value['sku'] ] ) ){
... new price found
$result[]=[
'post_id'=> $value['post_id'],
'sku' => $value['sku'],
'price' => $new_array2[ $value['sku'] ]
];
}
else{
... use old price
}
}
我通过创建自己的find函数成功地做到了这一点
// Match Products
$result = [];
function find($array, $key, $id) {
$result = [];
foreach ($array as $product) {
if ($product['id'] == $key) {
$result['post_id'] = $id;
$result['sku'] = $key;
$result['price'] = $product['price'];
}
}
return $result;
}
foreach ($woProducts as $woProduct) {
$matchedProduct = find($dbProducts, $woProduct['sku'], $woProduct['post_id']);
array_push($result, $matchedProduct);
}
print_r($result);
那么,你哪里有问题?这就是解决编码问题,而不是为您编写代码。我不知道如何使用PHP。我在JS中做了类似的事情,我循环通过array\u one,然后使用
array\u two.find()
将它们“连接”在一起。