簡體   English   中英

數組中具有相同鍵的值的總和

[英]Sum of value with the same key in arrays

    $query = "SELECT * FROM gbex_importacao_adicao WHERE di_id ='1817102984'";

   ob_start();


   if( $result = odbc_exec ($conn, $query) ) {
   }
   while( $row = odbc_fetch_array($result) ) {
  $adicao[]= "'".$row ['adicao']."'";
  $ValorTotal[]= $row ['ValorTotal'];

   }


  foreach($adicao as $key => $value) {
         $adicoes = $adicao [$key];
         $VlrTotal  = $ValorTotal[$key];


  echo "Key:" . $adicao[$key] . " - " . "VlrTotal: " . $ValorTotal[$key]  . "<br>";

  }

結果:

  • 密鑰:'1' - VlrTotal:2347.8500000
  • 密鑰:'1' - VlrTotal:1820.0000000
  • 密鑰:'2' - VlrTotal:157.8500000
  • 密鑰:'2' - VlrTotal:175.8000000
  • 密鑰:'2' - VlrTotal:196.6200000
  • 密鑰:'2' - VlrTotal:126.3800000
  • 密鑰:'3' - VlrTotal:326.6600000
  • 密鑰:'3' - VlrTotal:255.3400000

我們需要幫助在這個 foreach 中按鍵對數組求和……就像這樣:

  • 密鑰:'1' - VlrTotal:4.167,850000

  • 密鑰:'2' - VlrTotal:656,6500000

  • 密鑰:'3' - VlrTotal:582.0000000

謝謝你

您可以在 while 循環中添加具有相同鍵的值。

循環遍歷結果時,將值添加到帶有鍵的結果數組中。

while( $row = odbc_fetch_array($result) ) {

  //add the value to the result array's value at index adicao
  $result[$row['adicao']] += $row ['ValorTotal']; 
 /*
 // the above will cause a warning when setting the first value
 // for $row['adicao'], you can check if it's set first
  if (isset ($result[$row['adicao']]){ 
         $result[$row['adicao']] += $row ['ValorTotal'];
     } else{ 
         $result[$row['adicao']] = $row ['ValorTotal']
    };

}
*/
foreach($result as $key => $value){
  echo "Key $key - value: $value<br>";
}

一個更好的主意可能是讓 SQL 為您完成工作並簡單地循環結果。

$query = "SELECT SUM(`ValorTotal`) as sum,`adicao` FROM gbex_importacao_adicao 
    WHERE di_id ='1817102984'
    GROUP BY `adicao` "

if( $result = odbc_exec ($conn, $query) ) {
    while( $row = odbc_fetch_array($result) ) {
        echo "Key: {$row['adicao']} - ValrTotal: {$row['sum']} <br>";
    }
}

暫無
暫無

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

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