php 按一列对对象数组进行分组,并对每组中的另一列求和

yshpjwxd  于 2023-09-29  发布在  PHP
关注(0)|答案(1)|浏览(121)

合并两个对象数组后,我得到一个结构如下的数组。我想将具有相同ID的对象分组并添加到它们的数量

[
    {
        id  :   1
        nome    :   T.SHIRT
        quantita    :   2
    
    }, 
    {
        id  :   2
        nome    :   Sweatshirt
        quantita    :   4
    
    },
  {
        id  :   1
        nome    :   T.SHIRT
        quantita    :   4
    
    }
]

我想得到一个这样的数组。

[
    {
        id  :   1
        nome    :   T.SHIRT
        quantita    :   6
    
    }, 
  {
        id  :   2
        nome    :   Sweatshirt
        quantita    :   4
    
    },
]

我该怎么做?

oymdgrw7

oymdgrw71#

下面的逻辑可能会帮助你:$store将包含每个“id”具有累积“quantita”的重构数组。

<?php
$arr = [
    (object)['id' => 1, 'nome' => 'T.SHIRT', 'quantita' => 2,],
    (object)['id' => 2, 'nome' => 'Sweatshirt', 'quantita' => 4,],
    (object)['id' => 1, 'nome' => 'T.SHIRT', 'quantita' => 4,],
];

$store = [];
foreach($arr as $record) {
    if(isset($store[$record->id])) {
        $store[$record->id]->quantita += $record->quantita;
    } else $store[$record->id] = $record;
}

工作demo

相关问题