2016-08-30 125 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

不客氣。 –