+1

somar array (array_sum) não funciona

criado por Dalton LG Jr. em 24/02/2010 5:43pm
Boa tarde amigos do phpBrasil.
Tenho que somar uma variável.
Na verdade ela é a soma de cada ítem do meu carrinho de compras.

Ex:
2 * 10 = 20
3 * 10 = 30

Preciso do resultado 50, certo?
Então estou usando isso...

$calculamult = $valor * $qtde;
$calculamult = number_format( $calculamult, 2,",",".");
echo "<td><center>$calculamult</center></td>";

$somatudo = array($calculamult);
echo "soma(a) = ".array_sum($somatudo)."\n";

Porém ao invés de retornar a soma da variavel $calculamult me retorna os valores da seguinte forma:
soma(a) = 595 soma(a) = 129 soma(a) = 39

Alguém poderia me ajudar?
Desde já agradeço

Lista de Respostas:

+2
24/02/2010 9:59pm
(~14 anos atrás)
Dalton, você deve passar para a função array_sum um vetor de números (int ou float) preferencialmente. Se você passa um vetor com números na forma de string no formato brasileiro, o PHP não sabe que aquilo é um formato brasileiro e não sabe somar nesta notação nativamente.

Além disso, você passou um array com um único elemento. A soma dos valores de um vetor com um único elemento é o próprio valor do único elemento. Use number_format apenas pra apresentar o resultado calculado.

// Vetor de valores a serem pagos
$vetor_valores = array();

// Percorrer cada item do carrinho
foreach ($carrinho as $item) {

    // Calcular o valor e jogar no vetor de valores
    $vetor_valores[] = $item->valor * $item->quantidade;
}

// Calcular o total
$valor_final = array_sum($vetor_valores);

Porém, como você já está percorrendo o carrinho numa estrutura de repetição, você pode calcular a soma durante este loop:

// Vetor de valores a serem pagos
$vetor_valores = array();

// Valor da soma total
$valor_final = 0.0;

// Percorrer cada item do carrinho
foreach ($carrinho as $item) {

    // Calcular o valor, jogar no vetor de valores e calcular soma
    $valor = $item->valor * $item->quantidade;
    $vetor_valores[] = $valor;
    $valor_final += $valor;
}

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)