Дублирующиеся значения в многомерном массиве и столбце слияния

У меня есть такой массив:

$my_arr = array();
array(14) {
[0]=>
array(4) {
["id_dde"]=>
string(3) "535"["id_station"]=>
string(3) "130"["id_catalog"]=>
string(2) "41"["quantity"]=>
string(2) "50"}
[1]=>
array(4) {
["id_dde"]=>
string(3) "535"["id_station"]=>
string(3) "130"["id_catalog"]=>
string(3) "259"["quantity"]=>
string(2) "70"}

С такими показателями.
Моя цель — иметь уникальные значения для id_dde, id_station и id_catalog. Если у меня есть два индекса с массивом, которые имеют одинаковые значения в столбцах тезисов, я хочу удалить один индекс и объединить оба столбца количества. Вот пример:

$my_arr = array();
array(14) {
[0]=>
array(4) {
["id_dde"]=>
string(3) "535"["id_station"]=>
string(3) "130"["id_catalog"]=>
string(2) "41"["quantity"]=>
string(2) "50"}
[1]=>
array(4) {
["id_dde"]=>
string(3) "535"["id_station"]=>
string(3) "130"["id_catalog"]=>
string(3) "41"["quantity"]=>
string(2) "5"}

=>

array(14) {
[0]=>
array(4) {
["id_dde"]=>
string(3) "535"["id_station"]=>
string(3) "130"["id_catalog"]=>
string(2) "41"["quantity"]=>
string(2) "55"}

Как я могу это сделать ? Я попытался с двойным foreach и unset, но я не получил правильный ответ, я думаю, что есть лучший метод тоже?

Спасибо!

0

Решение

Я получил ожидаемый результат с двойным foreach. Попробуй это :

$result=[];
foreach ($my_arr as &$dde1) {
$qty = 0;
foreach ($my_arr as $key => $dde2) {
if ($dde1['id_dde'] == $dde2['id_dde'] && $dde1['id_station'] == $dde2['id_station'] && $dde1['id_catalog'] == $dde2['id_catalog']) {
$qty += $dde2['quantity'];
unset($my_arr[$key]);
}
}
$dde1['quantity'] = $qty;
$result[] = $dde1;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector