Jump to content
Marcos Vinícius

Soma de array

Recommended Posts

Colegas,

 

Eu não estou conseguindo fazer uma soma de valores, que imagino seja simples mas não encontrei nada na net que ajudasse. 

Eu preciso somar um total de um while que, em resumo, é uma quantidade buscada no BD x um valor que pego em um API.
 

$resultadod = mysqli_query($con, "SELECT * FROM acoes WHERE qtv = '0'");
$num_rowsd = mysqli_num_rows($resultadod);

{
while($dadosd = mysqli_fetch_array($resultadod)){

$qtC = $dadosd["qtC"];
$acao = $acao["acao"];

$vatual = "https://api.hgbrasil.com/finance/stock_price?key=$chave&symbol=$acao";

$total = $qtC * $vatual;
}

Esse script tá bem resumido. Só com o principal para entenderem. Caso queiram o código inteiro para usá-lo, é só pedir.

 

O $vatual eu pego em um API

 

Preciso então somar o $total de todos os registros retornados no fim do while. Por exemplo, tenho duas ações e quero a soma do valor atual das duas. 

 

Share this post


Link to post
Share on other sites

??? Deveria está fazendo o calculo?

 

Tentou verificar o que são:

$qtC

e

$vatual

 

Faça um var_dump dessas variáveis e veja se seus valores são dados que podem ser calculados, pois acredito que possa ser essa a razão de não fazer o calculo.

Se mesmo assim forem strings numérias converta-as em INTEGER antes do calculo.

Share this post


Link to post
Share on other sites

 

Você pode usar a função array_sum() do php para calcular a soma de todos os valores numéricos em uma array.

Vou tentar com este exemplo para que você possam entender da melhor forma como essa função funciona:

 

<?php
$array1 = array(15, 10, 4.5, 8, 15);
$array2 = array("ea" => 1.5, "qweb" => 6.5, "qwea" => 3.2, "qefg" => 10.4);
echo array_sum( $array1 ); // Saídas: 52.5 
echo " - ";
echo array_sum( $array2 ); // Saídas: 21.6

?>

 

Veja este outros Exemplos

LINK1

 

LINK2

 

Espero que possa lhe ajudar da melhor forma

Share this post


Link to post
Share on other sites
15 horas atrás, Jack Oliveira disse:

 

Você pode usar a função array_sum() do php para calcular a soma de todos os valores numéricos em uma array.

Vou tentar com este exemplo para que você possam entender da melhor forma como essa função funciona:

 


<?php
$array1 = array(15, 10, 4.5, 8, 15);
$array2 = array("ea" => 1.5, "qweb" => 6.5, "qwea" => 3.2, "qefg" => 10.4);
echo array_sum( $array1 ); // Saídas: 52.5 
echo " - ";
echo array_sum( $array2 ); // Saídas: 21.6

?>

 

Veja este outros Exemplos

LINK1

 

LINK2

 

Espero que possa lhe ajudar da melhor forma


Então... eu até tinha visto esses exemplos mas o problema é que não tenho a quantidade certa de resultados vindos do BD. O while é q vai trazer. E depois que trouxer, vou multiplicar o valor trazido por outro. Esse resultado é que  eu não sei como fazer pra inserir no array. 

Já pesquisei sobre arrays mas tudo q encontrei é básico como esses exemplos. 

Share this post


Link to post
Share on other sites
/* 
 * inicio os arrays fora do loop para salvar valores
*/
$qtC    = [];
$vatual = []; 

while($dadosd = mysqli_fetch_array($resultadod)){

/* 
 * Dentro do while armazeno os resultados nos arrays
*/
$qtC[]    = $dadosd["qtC"];
$vatual[] = "https://api.hgbrasil.com/finance/stock_price?key=$chave&symbol=$acao["acao"]";

}

/* 
 * Somo todos os valores de cada um dos arrays
*/
$totalqtC    = array_sum($qtC);
$totalvatual = array_sum($vatual);

/* 
 * Multiplico os valores somados e então os imprimo
*/
$totalfinal  = ($totalqtC * $totalvatual)
echo $totalfinal;

 

Isso seria basicamente o que você demonstra que procura supondo que para cada resultado do while o $vatual seja diferente baseado na sua ação.

 

Sempre que você precisar salvar dados em array dentro de um loop, inicie a variavel fora do loop como array e então a aplique dentro do loop para que cada iteração seja armazenada numa chave do array.

Share this post


Link to post
Share on other sites
17 minutos atrás, Guilherme Luiz disse:

/* 
 * inicio os arrays fora do loop para salvar valores
*/
$qtC    = [];
$vatual = []; 

while($dadosd = mysqli_fetch_array($resultadod)){

/* 
 * Dentro do while armazeno os resultados nos arrays
*/
$qtC[]    = $dadosd["qtC"];
$vatual[] = "https://api.hgbrasil.com/finance/stock_price?key=$chave&symbol=$acao["acao"]";

}

/* 
 * Somo todos os valores de cada um dos arrays
*/
$totalqtC    = array_sum($qtC);
$totalvatual = array_sum($vatual);

/* 
 * Multiplico os valores somados e então os imprimo
*/
$totalfinal  = ($totalqtC * $totalvatual)
echo $totalfinal;

 

Isso seria basicamente o que você demonstra que procura supondo que para cada resultado do while o $vatual seja diferente baseado na sua ação.

 

Sempre que você precisar salvar dados em array dentro de um loop, inicie a variavel fora do loop como array e então a aplique dentro do loop para que cada iteração seja armazenada numa chave do array.

Legal!!!!!!

 

Obrigado!!!! Esse é o fórum!!!!!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Marcos Vinícius
      Colegas,
       
      Eu já li um monte sobre soma de arrays mas não estou conseguindo fazer funcionar direito...  
       
      A questão é a seguinte... estou buscando dados em um bd e em cada um dos registros eu faço uma conta e coloco no array... no fim, preciso da soma de tudo. Mas o retorno está sendo apenas do último registro. 
       
      $resultado = mysqli_query($con, "SELECT * FROM bd"); while($dados = mysqli_fetch_array($resultado)){ $valor = $dados["valor"]; $dias = $dados["dias"]; $perc = $valor/$dias; $arr=array("$perc"); } echo array_sum($arr); ?>  
      Alguma ajuda? Isso não deveria ser difícil!!!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.