Объединение двух многомерных массивов с использованием ключа и добавление значений

Я хочу объединить два ключа с использованием ключа (product_id) и добавить эти значения (использование). Массив 1

 массив
 (
     [0] => Массив
         (
             [name] => Перепланировать службу 
             [использование] => 1
             [product_id] => 8
         )

     [1] => Массив
         (
             [name] => Добавление изображения
             [использование] => 1
             [product_id] => 5
         )

     [2] => Массив
         (
             [name] => Каждое событие календаря
             [использование] => 1
             [product_id] => 14
         )

 )

Массив 2

 массив
 (
     [0] => Массив
         (
             [name] => Добавление изображения
             [использование] => 1
             [product_id] => 5
         )

     [1] => Массив
         (
             [name] => Schedule A Service
             [использование] => 3
             [product_id] => 11
         )

     [2] => Массив
         (
             [name] => Каждое событие календаря
             [использование] => 2
             [product_id] => 14
         )

     [3] => Массив
         (
             [name] => Панель показателей эффективности продаж
             [использование] => 2
             [product_id] => 30
         )

     [4] => Массив
         (
             [имя] => Цитата
             [использование] => 1
             [product_id] => 32
         )

 )

Мне нужно, чтобы это было похоже на объединение и добавление значений использования.

 массив
 (
     [0] => Массив
         (
             [name] => Добавление изображения
             [использование] => 2
             [product_id] => 5
         )

     [1] => Массив
         (
             [name] => Schedule A Service
             [использование] => 3
             [product_id] => 11
         )

     [2] => Массив
         (
             [name] => Каждое событие календаря
             [использование] => 3
             [product_id] => 14
         )

     [3] => Массив
         (
             [name] => Панель показателей эффективности продаж
             [использование] => 2
             [product_id] => 30
         )

     [4] => Массив
         (
             [имя] => Цитата
             [использование] => 1
             [product_id] => 32
         )

     [5] => Массив
         (
             [name] => Перепланировать службу 
             [использование] => 1
             [product_id] => 8
         )

 )

Это мой код для создания массивов


     foreach ($ query-> rows as $ product) {

      $ Top_products [] = массив (
         'Имя' => $ произведение [ 'имя'],
         'Использование' => $ произведение [ 'pusage'],
         'Product_id' => $ произведение [ 'product_id']
      );

     }


     foreach ($ query_2-> rows as $ product) {        

          $ Top_point_products [] = массив (
            'Имя' => $ произведение [ 'имя'],
            'Использование' => $ произведение [ 'p_usage'],
            'Product_id' => $ произведение [ 'product_id']
          );

     }

 $ first = array (

     массив (
         «name» => «Перепланировать службу»,
         «usage» => 1,
         "product_id" => 8
     ),
     массив (
         «name» => «Добавление изображения»,
         «usage» => 1,
         "product_id" => 5
     ),
     массив (
         «name» => «Каждое событие календаря»,
         «usage» => 1,
         "product_id" => 14
     )
     );
 $ second = array (


     массив (
         «name» => «Добавление изображения»,
         «usage» => 1,
         "product_id" => 5
     ),
     массив (
         «name» => «Schedule A Service»,
         «использование» => 3,
         "product_id" => 11
     ),
     массив (
         «name» => «Каждое событие календаря»,
         «использование» => 2,
         "product_id" => 14
     ),
     массив (
         «name» => «Панель показателей эффективности продаж»,
         «использование» => 2,
         "product_id" => 30
     ),
     массив (
         "name" => "Quote",
         «usage» => 1,
         "product_id" => 32
     )
 );

 $ result = array_unique (array_merge ($ first, $ second), SORT_REGULAR);

Использовать array_unique & array_merge

Используйте array_merge function , например:

 $C = array_merge($A, $B); print_r($C); 

Читать инструкцию Array merge

попробуйте этот код

 <?php $array1=array ( 0 => array( 'name' => "Reschedule A Service", 'usage' => 1, 'product_id' => 8 ), 1 => Array ( 'name' => "Adding An Image", 'usage' => 1, 'product_id' => 5 ), 2 => Array ( 'name' => "Each Calendar Event", 'usage' => 2, 'product_id' => 14 ) ); $array2=array ( 0 => Array ( 'name' => "Adding An Image", 'usage' => 1, 'product_id' => 5 ), 1 => Array ( 'name' => "Schedule A Service", 'usage' => 3, 'product_id' => 11 ), 2 => Array ( 'name' => "Each Calendar Event", 'usage' => 5, 'product_id' => 14 ), 3 => Array ( 'name' => "Sales Performance Dashboard", 'usage' => 2, 'product_id' => 30 ), 4 => Array ( 'name' => "Quote", 'usage' => 1, 'product_id' => 32 ) ); $product_id1=array_column($array1, 'product_id'); $product_id2=array_column($array2, 'product_id'); $new=array_intersect($product_id1,$product_id2); foreach ($new as $key => $value) { if(in_array($new[$key],$product_id2)){ $array2[array_search($new[$key],$product_id2)]['usage']+=$array1[$key]['usage']; } } $new1=array_diff($product_id1,$product_id2); foreach ($new1 as $key => $value) { $array2[]=$array1[$key]; } foreach ($array2 as $key => $value) { echo "[".$key."]=><br>"; foreach ($value as $key1 => $value1) { echo "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp"; echo "[".$key1."]=>".$value1."<br>"; } echo "<br>"; } ?> 

вывод

[0] => [name] => Добавление изображения [использование] => 2 [product_id] => 5

[1] => [name] => Расписание A Сервис [использование] => 3 [product_id] => 11

[2] => [name] => Каждое событие календаря [использование] => 7 [product_id] => 14

[3] => [name] => Панель показателей эффективности продаж [использование] => 2 [product_id] => 30

[4] => [name] => Quote [usage] => 1 [product_id] => 32

[5] => [name] => Перепланировать A Сервис [использование] => 1 [product_id] => 8

Используйте array_merge и простой цикл foreach чтобы проверить ваше состояние и обновить значения usage .

Смотри ниже

 $result = array_merge($arrArray1, $arrArray2); $result2 = array(); foreach($result as $key => $value){ if(array_key_exists($value['product_id'], $result2)){ $result2[$value['product_id']]['usage'] += $value['usage']; } else{ $result2[$value['product_id']] = $value; } } print_r($result2); 

Если вы хотите сбросить свои результирующие индексы массива, используйте array_merge снова, как это

 $result2 = array_merge($result2); 

Надеюсь, это поможет