Ir para conteúdo

POWERED BY:

Marcos Vinícius

[Resolvido] Soma array

Recommended Posts

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!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Marcos Vinícius. Que bom que você já resolveu, mas respondendo sua questão original:

 

Você poderia ter, dentro do while, feito a soma da variável, assim:

$soma = 0;

while($dados = mysqli_fetch_array($resultado)){

        $valor = $dados["valor"];
        $soma += $valor;// se $valor for a variável que você gostaria de obter o somatório
        $dias = $dados["dias"];

        $perc = $valor/$dias;
           
        $arr=array("$perc");
 
}

echo $soma;

 

O array_sum, dentro do seu contexto, faria um segundo loop, que seria muito mais lento. Além disso ele soma apenas os valores dentro de um array, como nesse exemplo:

$array = [ 10, 20, 30, 40, 50 ];

echo array_sum( $array );// 150

Mas não era seu caso, pois seu array era mais complexo.

 

Ao menos que você fizesse o seguinte (isso iria adicionar ainda mais loops, ou seja, não é muito recomendadável, mas seria uma opção fácil):

<?php
$array = [
    [
        'id' => 1,
        'valor' => 10,
        'nome' => 'foo'
    ],
    [
        'id' => 2,
        'valor' => 20,
        'nome' => 'bar'
    ],
    [
        'id' => 3,
        'valor' => 30,
        'nome' => 'baz'
    ],
];

$valores = array_column( $array, 'valor' );
/**
 * $valores agora possui:
 * Array
 * (
 *     [0] => 10
 *     [1] => 20
 *     [2] => 30
 * )
 */

echo array_sum( $valores );// 60

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal @Matheus Tavares

 

Ficou bem simples. Resolveria!!! Mas como eu tinha bem poucos dados, pude fazer a conta antes de salvá-los. 

 

Só uma dúvida. Eu quero a somatória dos dados $valor/$dias

Ou seja, quero a média do valor versus dias e depois somar todas as médias. Ficaria assim né?

$soma = 0;

while($dados = mysqli_fetch_array($resultado)){

        $valor = $dados["valor"];
        $dias = $dados["dias"];

        $perc = $valor/$dias;

        $soma += $perc;
        		 
}

echo $soma;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Marcos Vinícius.

 

Em 21/06/2021 at 15:19, Marcos Vinícius disse:

Ou seja, quero a média do valor versus dias e depois somar todas as médias. Ficaria assim né?

Sim, seria exatamente como você descreveu. No entanto, embora eu não seja estatístico, não vejo muita utilidade na soma das médias.

Talvez eu esteja enganado, mas acredito que você queira a média entre todas as médias, e isso você poderia conseguir assim:

$qtd = 0;
$soma = 0;

while($dados = mysqli_fetch_array($resultado)){
        $valor = $dados["valor"];
        $dias = $dados["dias"];

        $perc = $valor / $dias;

        $soma += $perc;
        ++$qtd;
}

echo $soma / $qtd;// média entre as médias

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 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. 
       
×

Informação importante

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