Adding values from a PHP array

Asked

Viewed 624 times

0

I need to add up the values coming from the database. For this, I am using the code below:

while($jmCarrinho = mysqli_fetch_object($sqlCarrinho)){
    .....
    $totalLargura = $jmProdutos->Largura * $jmSomarQ->QtdProdutos;
    $totalAltura = $jmProdutos->Altura * $jmSomarQ->QtdProdutos;
    $totalComprimento = $jmProdutos->Comprimento * $jmSomarQ->QtdProdutos;
    $totalPeso = $jmProdutos->PesoProduto * $jmSomarQ->QtdProdutos;
    .....
}

With this code, it brings me the following result:

Produto 1 | Total multiplicando a qtd da compra com as dimensões do produto

Unitário: 13 | Total Largura: 13
Unitário: 11 | Total Altura: 11
Unitário: 25 | Total Comprimento: 25
Unitário: 1 | Total Peso: 1

Produto 2 | Total multiplicando a qtd da compra com as dimensões do produto

Unitário: 21 | Total Largura: 42
Unitário: 13 | Total Altura: 26
Unitário: 35 | Total Comprimento: 70
Unitário: 1 | Total Peso: 2

What I need is to add up the total value of each dimension. Ex.:

Total de Largura: 55
Total de Altura: 37
Total de Comprimento: 95
Total de Peso: 3

I tried with the following codes below, but could not (I put only one as an example):

$somar = array();
while($jmCarrinho = mysqli_fetch_object($sqlCarrinho)){
....
   $totalLargura = $jmProdutos->Largura * $jmSomarQ->QtdProdutos;
   $totalAltura = $jmProdutos->Altura * $jmSomarQ->QtdProdutos;
   $totalComprimento = $jmProdutos->Comprimento * $jmSomarQ->QtdProdutos;
   $totalPeso = $jmProdutos->PesoProduto * $jmSomarQ->QtdProdutos;

    $somar["TotalPeso"] = $totalPeso;
}

// Tentativa 1
echo "Peso " .array_sum(array_column($somar, "TotalPeso"));

// Tentativa 2
echo "Peso " .array_sum($somar["TotalPeso"]);

// Tentativa 3
$soma = 0;
foreach($somar as $key => $value){
    $soma += $value["TotalPeso"];
}
echo $soma;

The results are 0 or null.

  • 1

    Just one observation, if you multiply the amount of product by each of its 3 dimensions, you will be calculating the space needed for the amount of qtd³, that is, to 2 products, space for 2³=8 of them. If you want only 2 even, multiply only by 2 in one of the dimensions and the others are unchanged.

  • Hello Dudaskant. I’m sorry, I couldn’t understand very well. In fact these post calculations would be for the Post Office freight in case there is more than one product and/or quantity in the cart. It would be to apply upon that reasoning?

  • 1

    Yes, for example, take two milk cartons. When you put one on top of the other, only the total height changes, which is multiplied by 2, however width and length remain with the same values, understood?

  • Got it. I’m really racking my brain here with this shipping with more than one product/quantity. Your tip was very important. I will go from that premise. Thank you.

1 answer

3


Why You No Longer Sum Up The Values Within Your Own Loop while?

$somaLargura = 0;     // Será a soma das larguras
$somaAltura = 0;      // Será a soma das alturas
$somaComprimento = 0; // Será a soma dos comprimentos
$somaPeso = 0;        // Será a soma dos pesos

while($jmCarrinho = mysqli_fetch_object($sqlCarrinho)){

    $totalLargura = $jmProdutos->Largura * $jmSomarQ->QtdProdutos;
    $totalAltura = $jmProdutos->Altura * $jmSomarQ->QtdProdutos;
    $totalComprimento = $jmProdutos->Comprimento * $jmSomarQ->QtdProdutos;
    $totalPeso = $jmProdutos->PesoProduto * $jmSomarQ->QtdProdutos;

    ...

    $somaLargura += $totalLargura;
    $somaAltura += $totalAltura;
    $somaComprimento += $totalComprimento;
    $somaPeso += $totalPeso;
}

echo "Você precisará de uma largura total de {$somaLargura}";
echo "e de uma altura total de {$somaAltura}";
echo "e de um comprimento total de {$somaComprimento}";
echo "e de um peso total de {$somaPeso}";
  • Perfect Anderson. It worked! Thank you.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.