2016-08-30 13 views
-2

これは私の多次元配列の例です。これはフォームを通じて生成されるので、これは動的配列なので、3つ以上のエントリが存在する可能性があります。配列動的多次元配列をキーで結合

$array = 
[ 
    [ 
     'itemNo' => 1, 
     'desc' => [ 
      ['serialNo' => 1, 'name' => 'a'], 
      ['serialNo' => 2, 'name' => 'b'] 
     ], 
     'quantity' => 2 
    ], 
    [ 
     'itemNo' => 2, 
     'desc' => [ 
      ['serialNo' => 1, 'name' => 'a1'], 
     ], 
     'quantity' => 1 
    ], 
    [ 
     'itemNo' => 1, 
     'desc' => [ 
      ['serialNo' => 3, 'name' => 'c'] 
     ], 
     'quantity' => 1 
    ] 
]; 

これらの配列を[itemNo]キーでマージしたいとします。この例では、Array [0]とArray [2]は同じキー '1'を持ちます。

私が欲しいこの結果...いつものようにこのような問題をグループ化するための

$merged = 
[ 
    [ 
     'itemNo' => 1, 
     'desc' => [ 
      ['serialNo' => 1, 'name' => 'a'], 
      ['serialNo' => 2, 'name' => 'b'] 
      ['serialNo' => 3, 'name' => 'c'] 
     ], 
     'quantity' => 3 
    ], 
    [ 
     'itemNo' => 2, 
     'desc' => [ 
      ['serialNo' => 1, 'name' => 'a1'], 
     ], 
     'quantity' => 1 
    ], 
]; 
+0

ダンプの代わりにソースコードを表示 – Aaron

答えて

0

、あなたが生成しようとしているグループ化された配列のキーとしてitemNoを使用しています。

foreach ($your_array as $x) { 
    $id = $x['itemNo']; // set the key 


    if (isset($grouped[$id])) { 

     // increment if that id is already set 
     $grouped[$id]['desc'] = array_merge($grouped[$id]['desc'], $x['desc']); 
     $grouped[$id]['quantity'] += $x['quantity']; 
    } else { 

     // add the entire entry if not 
     $grouped[$id] = $x; 
    } 
} 
+0

ありがとう!これはうまくいった – user2122151

+0

あなたは大歓迎です。 –