给定以下两个数组,他们如何有效地合并以产生第三个数组? productDataLaravel 5.3 - 基于2个匹配键合并数组?
$productData =
[
{
"product_id": 4,
"type": "electronic",
"name": "monitor",
"specs": {
"HDMI": true,
"VGA": false
}
},
{
"product_id": 5,
"type": "electronic",
"name": "HDMI cable",
"specs": {
"length": "3ft"
}
},
{
"product_id": 6,
"type": "kitchen",
"name": "spoon"
}
]
产品
$products =
{
"products": 3,
"per_page": 10,
"current_page": 1,
"data": [
{
"id": 4,
"product_type": "electronic",
"product_id": 6
},
{
"id": 6,
"type": "electronic",
"product_id": 5
},
{
"id": 9,
"type": "kitchen",
"product_id": 4
}
]
}
productsFinal($productData
合并成$products
- 基于对product_id/product_id
匹配组合和type/product_type
)
$productsFinal =
{
"products": 3,
"per_page": 10,
"current_page": 1,
"data": [
{
"id": 4,
"product_type": "electronic",
"product_id": 6,
// How to merge product data and wrap with "data" key
"data": {
"product_id": 6,
"type": "kitchen",
"name": "spoon"
}
},
{
"id": 6,
"type": "electronic",
"product_id": 5,
// How to merge product data and wrap in "data" key
"data": {
"product_id": 5,
"type": "electronic",
"name": "HDMI cable",
"specs": {
"length": "3ft"
}
}
},
{
"id": 9,
"type": "kitchen",
"product_id": 4,
// How to merge product data and wrap in "data" key
"data": {
"product_id": 6,
"type": "kitchen",
"name": "spoon"
}
}
]
}
我尝试不同的东西在foreach循环的结果,但仍不能让它呈现像预期一样:
foreach($productData as $productDataItem) {
// when $productDataItem.product_id == $product.product_id && $productDataItem.type == $product.product_type
// move the matching $productDataItem object into matching $product object, wrapped in a new "data" key
}
这是不是在这里的PHP代码。你试图自己解决这个问题? – miken32
它是在PHP(Laravel)中,我有这个问题,这是一个laravel集合输出。我尝试了几种不同的方式,但无法完成第三个数组的格式,并且实现时间太长。这就是为什么我在'php/laravel'下发布了这个问题,因为知道laravel的人可能知道如何做到这一点。 – Wonka
您是否试图为API做出JSON响应?如果是,我可能会有解决方案。 –