簡體   English   中英

對特定鍵具有相同值的數組索引求和

[英]sum array indexes with same value for a specific key

我有以下數組:

[0] => Array

    (
        [id] => 1
        [uid] => 50
        [sum1] => 1
        [sum2] => 2
       

    )

[1] => Array

    (
        [id] => 2
        [uid] => 50
        [sum1] => 2
        [sum2] => 4
       

    )
[2] => Array

    (
        [id] => 3
        [uid] => 51
        [sum1] => 3
        [sum2] => 5
       

    )

如您所見,在其中一些索引上,[uid] 是相同的。 數組的長度和數據是動態的。 我需要做的是合並具有相同值的索引 [uid] 並將其他鍵的值相加:

[0] => Array

    (
        [id] => 2
        [uid] => 50
        [sum1] => 3
        [sum2] => 6
       

    )
[1] => Array

    (
        [id] => 3
        [uid] => 51
        [sum1] => 3
        [sum2] => 5
       

    )

但是對於我的生活,我無法弄清楚如何做到這一點。

任何幫助表示贊賞!

你可以這樣操作

<?php
$mainArray = [ 
    0 => Array
    (
        'id' => 1,
        'uid' => 50,
        'sum1' => 1,
        'sum2' => 2
    ),
    1 => Array
    (
        'id' => 2,
        'uid' => 50,
        'sum1' => 2,
        'sum2' => 4
    ),
    2 => Array
    (
        'id' => 3,
        'uid' => 51,
        'sum1' => 3,
        'sum2' => 5
    )
];
$newArray=[];
foreach ($mainArray as $value) {
    if(!array_key_exists($value['uid'], $newArray)){
        // Store first time
        $newArray[$value['uid']] = $value;
    }else{
        // Already exist, then sum and replace it
        $newArray[$value['uid']]['id'] = $value['id'];
        $newArray[$value['uid']]['sum1'] += $value['sum1'];// Sum with previous value
        $newArray[$value['uid']]['sum2'] += $value['sum2'];// Sum with previous value
    }
}
$newArray = array_values($newArray);// Reset indexes, Start the array index with zero
print_r($newArray);// To see the output

Output:


Array
(
    [0] => Array
        (
            [id] => 2
            [uid] => 50
            [sum1] => 3
            [sum2] => 6
        )

    [1] => Array
        (
            [id] => 3
            [uid] => 51
            [sum1] => 3
            [sum2] => 5
        )
)

我認為你是對的。 實際上,我使用類似的方法解決了這個問題:

$sumArray = Array();
foreach ($array1 as $item){

        if(isset($sumArray[$item['uid']])){          
          $sumArray[$item['idPartener']]['sum1'] += $item['sum1'];
          $sumArray[$item['idPartener']]['sum2'] += $item['sum2'];

        }else{          
          $sumArray[$item['uid']] = Array(
            'id' => $item['id'],             
            'sum1' => $item['sum1'],
            'sum2' => $item['sum2'] ,
          );
        }

    }

感謝你的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM