Сумма значений с тем же ключом в массивах - PullRequest
0 голосов
/ 25 марта 2020
    $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

спасибо

1 Ответ

0 голосов
/ 26 марта 2020

Вы можете добавить значения одним и тем же ключом в ваше время, пока l oop.

При циклическом просмотре результатов добавьте значение в массив результатов с помощью ключа.

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 выполнить работу за вас и просто l oop по результатам.

$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>";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...