簡體   English   中英

如何在對象數組中對具有相同ID的分組或求和

[英]How to group or sum with the same id in object array

我有這個對象數組。 我使用print_r進行打印。 我想將所有具有相同ID的X,Y和總計相加,或按ID將它們分組,然后將X,Y和總計相加。

array (size=3)
  0 => 
    object(stdClass)[13]
      public 'id' => string '24' (length=2)
      public 'x' => float 2
      public 'y' => float 5
      public 'total' => int 7
  1 => 
    object(stdClass)[17]
      public 'id' => string '25' (length=2)
      public 'x' => int 0
      public 'y' => float 2
      public 'total' => int 2
  2 => 
    object(stdClass)[19]
      public 'id' => string '25' (length=2)
      public 'x' => float 13
      public 'y' => int 0
      public 'total' => int 13

這是我的嘗試,但是沒用。

$sumArray = array();

            foreach ($r as $k=>$subArray) {
                foreach ($subArray as $id => $value) {
                    $sumArray = $subArray->x+=$value;
                }
            }

先感謝您。

假設您擁有的數據稱為$inputData此代碼應創建一個新數組,其中包含按ID分組和總計的項。

更新資料

添加了array_values()以重置鍵。

<?php
    $arrayResult = array();
    foreach($inputData as $someInput){
        if(!isset($arrayResult[$someInput->id])){
            $current = new stdClass();
            $current->id = $someInput->id;
            $current->x = $someInput->x;
            $current->y = $someInput->y;
            $current->total = $someInput->total;
            $arrayResult[$someInput->id] = $current;
        }else{
            $current = $arrayResult[$someInput->id];
            $current->x += $someInput->x;
            $current->y += $someInput->y;
            $current->total += $someInput->total;
            $arrayResult[$someInput->id] = $current;
        }
    }
    $arrayResult = array_values($arrayResult);
?>

暫無
暫無

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

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