

現在Laravelにて開発中のアプリがありネストしたデータを一つの配列として扱いたいのですがやり方がわからなく困っています。

実現したい形は以下となります。  
配列のデータは下記だと2件ですが100以上ある想定です。  
ループで回して実現したいのですが、もしわかる方がいたらアドバイスお願いします。

・元データ

[code]

    array:2 [
      0 => array:3 [
        "id" => "0GPHKD"
        "target_layer" => "男女 10代(T層)"
        "key" => array:2 [
          0 => array:2 [
            "id" => 10
            "product_name" => "コーヒー"
          ]
          1 => array:2 [
            "id" => 9
            "product_name" => "コーヒーマグカップ"
          ]
        ]
      ]
      1 => array:3 [
        "id" => "0GPHKC"
        "target_layer" => "男女 20〜34歳(M1F1層)"
        "key" => array:2 [
          0 => array:2 [
            "id" => 10
            "product_name" => "コーヒー"
          ]
          1 => array:2 [
            "id" => 9
            "product_name" => "コーヒーマグカップ"
          ]
        ]
      ]
    ]
    
[/code]

・実現したい形

[code]

    array:2 [
      0 => array:3 [
        "id" => "0GPHKD"
        "target_layer" => "男女 10代(T層)"
        "item_id1" => "10"
        "product_name1" => "コーヒー"
         "item_id2" => "9"
        "product_name2" => "コーヒーマグカップ"
        ]
      ]
      1 => array:3 [
        "id" => "0GPHKC"
        "target_layer" => "男女 20〜34歳(M1F1層)"
     　   "item_id1" => "10"
        "product_name1" => "コーヒー"
         "item_id2" => "9"
        "product_name2" => "コーヒーマグカップ"
        ]
      ]
    ]
    
[/code]


CC BY-SA 4.0
2022-04-05T11:10:01.027
88183
2022-08-10T07:17:26.460
2022-04-05T12:17:39.493
3060
45349
question
php laravel array
laravel 多次元配列の値の取り出しについて


一番簡単なのはネストループを使って、新しい配列を作ります。  
例えば下記のコードです。  
サンプルデータ：

[code]

    $a = [
        [
          "id" => "0GPHKD",
          "target_layer" => "男女 10代(T層)",
          "key" => [
            [
              "id" => 10,
              "product_name" => "コーヒー"
            ],
            [
              "id" => 9,
              "product_name" => "コーヒーマグカップ"
            ]
          ]
        ],
        [
          "id" => "0GPHKC",
          "target_layer" => "男女 20〜34歳(M1F1層)",
          "key" => [
            [
              "id" => 10,
              "product_name" => "コーヒー"
            ],
            [
              "id" => 9,
              "product_name" => "コーヒーマグカップ"
            ]
          ]
        ]
    ];
    
[/code]

ネストループ：

[code]

    $newList = [];
    foreach ($a as $key => $val) {
        $new = [
            "id" => $val["id"],
            "target_layer" => $val["target_layer"],
        ];
    
        if (count($val["key"]) > 0) {
            for ($i=0; $i < count($val["key"]); $i++) {
                $new["item_id".$i] = $val["key"][$i]["id"];
                $new["product_name".$i] = $val["key"][$i]["product_name"];
            }
        }
    
        array_push($newList, $new);
    }
    
[/code]

結果：

[code]

    Array
    (
        [0] => Array
            (
                [id] => 0GPHKD
                [target_layer] => 男女 10代(T層)
                [item_id0] => 10
                [product_name0] => コーヒー
                [item_id1] => 9
                [product_name1] => コーヒーマグカップ
            )
    
        [1] => Array
            (
                [id] => 0GPHKC
                [target_layer] => 男女 20〜34歳(M1F1層)
                [item_id0] => 10
                [product_name0] => コーヒー
                [item_id1] => 9
                [product_name1] => コーヒーマグカップ
            )
    
    )
    
[/code]


CC BY-SA 4.0
2022-08-10T07:17:26.460
90495
2022-08-10T07:17:26.460
40476
88183
answer