次の2つの配列が与えられた場合、どのように効率的にマージして3番目の配列を得ることができますか? 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は -
$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"
}
}
]
}
(
$productData
が
$products
にマージ一致
product_id/product_id
のコンボと
type/product_type
に基づきます)
私は、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コレクションの出力です。私はいくつかの方法を試しましたが、3番目の配列のフォーマットを達成することができず、実装に時間がかかりすぎています。だから、laravelを知っている誰かがこれを行う方法を知っているかもしれないので、私は 'php/laravel'の下で質問を投稿したのです。 – Wonka
APIのJSONレスポンスを作成しようとしていますか?はいの場合は、解決策があるかもしれません。 –