laravel 多次元配列の値の取り出しについて


現在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]




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

[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]

