Ir para conteúdo
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. 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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. 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por 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!!!
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.