Я хочу объединить два ключа с использованием ключа (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 "      "; 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);
Надеюсь, это поможет