2016-08-30 2 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'을가집니다.

I가 원하는 이러한 결과 ... 언제나 이와 같은 문제를 그룹화

$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

당신을 환영합니다. –