多维数组 php - 对具有相同 groupRange 的值求和

multidimensional array php - sum values with same groupRange

我会尝试用小例子来解释我的问题: 我有一个表示来自数据库的数据的多维数组,假设输入如下所示:

Array
(
[0] => Array
(
[groupRange] => 20-25
[value] => 12
[followersFemaleRate] => 12
[followersMaleRate] => 14
)

[1] => Array
(
[groupRange] => 30-44
[value] => 32
[followersFemaleRate] => 17
[followersMaleRate] => 3
)

[2] => Array
(
[groupRange] => 30-44
[value] => 88
[followersFemaleRate] => 17
[followersMaleRate] => 3
)

)

我想要什么?求和 value、followersFemaleRate、followersMaleRate 具有相同的 groupRange,所以输出应该是这样的:

Array
(
[0] => Array
(
[groupRange] => 20-25
[value] => 12
[followersFemaleRate] => 12
[followersMaleRate] => 14
)

[1] => Array
(
[groupRange] => 30-44
[value] => 120
[followersFemaleRate] => 34
[followersMaleRate] => 6
)

)

我的代码:

    $RangeArray = [];
    foreach($dbProfile->getData() as $d) {
        foreach ($d->getGroupPercentages() as $x){
            $ageRangeSingleArray['groupRange'] = $x->getGroupRange();
            $ageRangeSingleArray['value'] = $x->getValue();
            $ageRangeSingleArray['followersFemaleRate'] = $x->getFollowerGenderFemale();
            $ageRangeSingleArray['followersMaleRate'] = $x->getFollowerGenderMale();
            $RangeArray [] = $ageRangeSingleArray;
        }
    }

但是我卡住了,我的想法是首先检查 groupRage 是否已经存在,如果是,则对该范围的值求和,如果不添加具有值的新元素 groupRange,代码有帮助吗?

尝试:

$input = [
    [
        'groupRange' => '20-25',
        'value' => 12,
        'followersFemaleRate' => 12,
        'followersMaleRate' => 14,
    ],
    [
        'groupRange' => '30-44',
        'value' => 88,
        'followersFemaleRate' => 17,
        'followersMaleRate' => 3,
    ],
    [
        'groupRange' => '30-44',
        'value' => 32,
        'followersFemaleRate' => 17,
        'followersMaleRate' => 3,
    ],
];

$groupedArray = [];             
foreach( $input as $item ){
    $groupedArray[$item['groupRange']]['groupRange'] = $item['groupRange'];
    $groupedArray[$item['groupRange']]['value'] = ($groupedArray[$item['groupRange']]['value'] ?? 0) + $item['value'];
    $groupedArray[$item['groupRange']]['followersFemaleRate'] = $item['followersFemaleRate'];
    $groupedArray[$item['groupRange']]['followersMaleRate'] = $item['followersMaleRate'];
}

$output = array_values($groupedArray);

print_r($output);

输出:

Array
(
    [0] => Array
        (
            [groupRange] => 20-25
            [value] => 12
            [followersFemaleRate] => 12
            [followersMaleRate] => 14
        )

    [1] => Array
        (
            [groupRange] => 30-44
            [value] => 120
            [followersFemaleRate] => 17
            [followersMaleRate] => 3
        )

)