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