給定以下兩個數組,他們如何有效地合併以產生第三個數組? 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響應?如果是,我可能會有解決方案。 –