Суммируйте одинаковые значения массива в один массив - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть массив, я хочу суммировать значения массива, если значения массива одинаковы.

вот массив, в этом массиве значения "CustnameGrp" и "BrNamegrp" совпадают, значение массива «stockcheck» должно быть суммой для ex 18, пожалуйста, смотрите мои исключенные результаты вывода, если более подробно я объясню

Array
(
    [0] => Array
        (
            [index] => 0
            [CustidGrp] => 22
            [CustnameGrp] => A & H TIRES AND BRAKES
            [TransTypeGrp] => 1
            [total] => 0
            [stockcheck] => 9
            [orders] => 0
            [NumLines] => 0
            [AcctidGrp] => 29
            [banchidgrp] => 26
            [prvidergrp] => NEXLINKSHOPWARE
            [prviderNamegrp] => Shop Ware
            [BrNamegrp] => Valencia
            [UserNamegrp] => shopware
            [UserTypeDescgrp] => SMS
            [UserTypeIdgrp] => 6
        )

    [1] => Array
        (
            [index] => 1
            [CustidGrp] => 22
            [CustnameGrp] => A & H TIRES AND BRAKES
            [TransTypeGrp] => 1
            [total] => 0
            [stockcheck] => 9
            [orders] => 0
            [NumLines] => 0
            [AcctidGrp] => 29
            [banchidgrp] => 26
            [prvidergrp] => ALLDATACL
            [prviderNamegrp] => ALL Data
            [BrNamegrp] => Valencia
            [UserNamegrp] => npmam
            [UserTypeDescgrp] => SMS
            [UserTypeIdgrp] => 6
        )
)

Я исключаю вывод следующим образом

Array
(
    [0] => Array
        (
            [index] => 0
            [CustidGrp] => 22
            [CustnameGrp] => A & H TIRES AND BRAKES
            [TransTypeGrp] => 1
            [total] => 0
            [stockcheck] => 18
            [orders] => 0
            [NumLines] => 0
            [AcctidGrp] => 29
            [banchidgrp] => 26
            [prvidergrp] => NEXLINKSHOPWARE
            [prviderNamegrp] => Shop Ware
            [BrNamegrp] => Valencia
            [UserNamegrp] => shopware
            [UserTypeDescgrp] => SMS
            [UserTypeIdgrp] => 6
        )
)

Я попробовал вот так:

$sumArray = array();
foreach ($disArr as $k=>$subArray) {
  foreach ($subArray as $id=>$value) {
     echo $value;
      if (array_key_exists($value, $sumArray)) {
             $sumArray[$id]['stockcheck']+=$value;
      } else {
          $sumArray[$id]=$value;
      }

  }
}

1 Ответ

0 голосов
/ 04 февраля 2020

Похоже, вы пытаетесь сгруппировать / суммировать на основе двух значений внутренних массивов. Вы можете сделать это, создав составной ключ для использования в массиве результатов.

foreach ($data as $item) {

    // Create a key combining the two fields you want to use for grouping
    $key = $item['CustidGrp'] . '|' . $item['BrNamegrp'];

    // set or update values in the result array using that key
    if (empty($sums[$key])) {
        $sums[$key] = $item;
    } else {
        $sums[$key]['stockcheck'] += $item['stockcheck'];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...