簡體   English   中英

PHP 數組使用唯一計數重新組織

[英]PHP array reorganize with unique count

我有以下數組,其中 ID 作為索引,有些作為值。 最終目標是獲得另一個數組中唯一 ID 的總數。

Array
(
    [0] => Array
        (
            [0] => Team Object
                (
                    [id] => 1
                    [countStat] => 25
                )
        )
    [1] => Array
        (
            [0] => Team Object
                (
                    [id] => 2
                    [countStat] => 24
                )
        )
    [2] => Array
        (
            [0] => Team Object
                (
                    [id] => 1
                    [countStat] => 23
                )
        )
    [3] => Array
        (
            [0] => Team Object
                (
                    [id] => 3
                    [countStat] => 23
                )
        )
    [4] => Array
        (
            [0] => Team Object
                (
                    [id] => 5
                    [countStat] => 21
                )
        )
    [5] => Array
        (
            [0] => Team Object
                (
                    [id] => 3                    
                    [countStat] => 21
                )
        )
    [6] => Array
        (
            [0] => Team Object
                (
                    [id] => 5
                    [countStat] => 20
                )
        )
    [7] => Array
        (
            [0] => Team Object
                (
                    [id] => 2
                    [countStat] => 20
                )
        )
)

我想要如下結果。

Array
(
    [0] => Array
        (
            [0] => Team Object
                (
                    [id] => 1
                    [countStat] => 48
                )
        )
    [1] => Array
        (
            [0] => Team Object
                (
                    [id] => 2
                    [countStat] => 44
                )
        )

    [3] => Array
        (
            [0] => Team Object
                (
                    [id] => 3
                    [countStat] => 44
                )
        )
    [4] => Array
        (
            [0] => Team Object
                (
                    [id] => 5
                    [countStat] => 41
                )
        )
)

我花了幾個小時來研究它,但無法得到解決方案。 有人可以幫忙嗎?

謝謝你。

看起來您想為類似的 id 對團隊對象的 countStats 求和。 我創建了一個類似的數據結構,循環遍歷它以形成一個臨時數組,該數組使用 id 作為鍵,並帶有關聯的數量(稍后求和 - 我的是數量,你的是 countStats)。 然后將它們相加並重新創建所需的輸出。

<?php

class Team
{
    public $id;
    public $amount;
    public function __construct($id, $amount)
    {
        $this->id     = $id;
        $this->amount = $amount;
    }
}

$input =
[
    [new Team(1, 3)],
    [new Team(1, 4)],
    [new Team(2, 5)],
    [new Team(2, 7)]
];

foreach($input as $subarray)
    $amounts[$subarray[0]->id][]=$subarray[0]->amount;

print_r($amounts);

foreach($amounts as $k => $v)
    $result[] = [new Team($k, array_sum($v))];

print_r($result);

輸出:

Array
(
    [1] => Array
        (
            [0] => 3
            [1] => 4
        )

    [2] => Array
        (
            [0] => 5
            [1] => 7
        )

)
Array
(
    [0] => Array
        (
            [0] => Team Object
                (
                    [id] => 1
                    [amount] => 7
                )

        )

    [1] => Array
        (
            [0] => Team Object
                (
                    [id] => 2
                    [amount] => 12
                )

        )

)

暫無
暫無

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

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