сумма уникальных данных из нескольких массивов - PullRequest
0 голосов
/ 12 февраля 2020

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

array:3 [▼
  0 => array:6 [▼
    "count_id" => 5
    "count_name" => "NE 28/1"
    "order_qty" => 75100
    "balance_qty" => 75100
    "stock_qty" => "0"
    "order_req" => 75100
  ]
  1 => array:6 [▼
    "count_id" => 13
    "count_name" => "NE 20/1 KH"
    "order_qty" => 2200
    "balance_qty" => 2200
    "stock_qty" => "48400"
    "order_req" => 0.0
  ]
]

и второй массив

array:2 [▼
  0 => array:6 [▼
    "count_id" => 13
    "count_name" => "NE 20/1 KH"
    "order_qty" => 2200
    "balance_qty" => 2200
    "stock_qty" => "45420.85"
    "order_req" => 0.0
 ]
 1 => array:6 [▼
   "count_id" => 24
   "count_name" => "NE 24/1 KH"
   "order_qty" => 5150
   "balance_qty" => 5150
   "stock_qty" => "45420.85"
   "order_req" => 0.0
 ]
]

Теперь мне нужно, чтобы общее значение "count_name" Like "NE 20/1 KH" суммировалось и печаталось только один раз. Что-то вроде ...

array:3 [▼
  0 => array:6 [▼
    "count_id" => 5
    "count_name" => "NE 28/1"
    "order_qty" => 75100
    "balance_qty" => 75100
    "stock_qty" => "0"
    "order_req" => 75100
  ]
  1 => array:6 [▼
    "count_id" => 13
    "count_name" => "NE 20/1 KH"
    "order_qty" => 4400
    "balance_qty" => 4400
    "stock_qty" => "96800"
    "order_req" => 0.0
  ]
  2 => array:6 [▼
    "count_id" => 24
    "count_name" => "NE 24/1 KH"
    "order_qty" => 5150
    "balance_qty" => 5150
    "stock_qty" => "45420.85"
    "order_req" => 0.0
  ]
]

Я пытаюсь сделать это двумя foreach l oop, но это не сработало. он печатает все данные несколько раз. пожалуйста, кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Это можно сделать, но, вероятно, просто объединить их с помощью запроса к базе данных.

// Your arrays of data
$data = [$array1, $array2];

// The fields you want to sum
$sumFields = ['order_qty', 'balance_qty', 'stock_qty', 'order_req'];

// The final array
$combined = [];

foreach ($data as $arr) {
    foreach ($arr as $item) {
        $key = $item['count_id'];
        if (!isset($combined[$key])) {
            $combined[$key] = $item;
        } else {
            foreach ($sumFields as $field) {
                $combined[$key][$field] += $item[$field];
            }
        }
    }
}

// Print result
print_r($combined);
0 голосов
/ 12 февраля 2020

Вы должны пройти через них oop. Этот код должен работать

foreach($array1 as $elem1){
    $found = false;
    foreach($array2 as $elem2){
        if($elem1->count_id = $elem2->count_id){
            $found=true
            //Add elements from elem1 to elem2
            break;
        }
    }
    if(!$found){
        array_push($array2, $elem1)        
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...