[英]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.