Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estava querendo somar os valores dentro de um foreach, mais ele sempre retorna pra mim os valores separados por espaço, exemplo: 20 30 40 50
gostaria de pegar todos esses valores e somar para dar o valor final
segue o codigo:
<?php
if(isset($_SESSION['carrinho'])):
$item_carrinho = '0';
if(count($_SESSION['carrinho']) > '0'):
foreach($_SESSION['carrinho'] as $id_produto_carrinho => $quantidade_produto_carrinho):
$item_carrinho++;
$database = open_database();
$sql = "SELECT nome, preco_varejo, preco_atacado FROM produto WHERE id ='$id_produto_carrinho'";
$resultados = mysqli_query($database,$sql);
$res=mysqli_fetch_array($resultados);
if (@mysqli_num_rows($resultados) > 0){
foreach($resultados as $read_produto_carrinho_view);
$valor_total_produto_carrinho = $quantidade_produto_carrinho * $read_produto_carrinho_view['preco_varejo'];
$valor_subtotal_venda = '0';
$valor_subtotal_venda += $read_produto_carrinho_view['preco_varejo'];
echo $valor_subtotal_venda;
}
?>Na realidade, esse código, assim como está, deveria estar dando erro de sintaxe. Tem abertura de if e foreach sem fechamento (abertura por dois pontos ":").
https://secure.php.net/manual/en/control-structures.alternative-syntax.php
>
Em 20/03/2018 at 08:05, Matheus Tavares disse:
1 - Se você coloca o ";" (ponto e vírgula) após o foreach, significa que ele fará o looping sem processar as linhas seguintes.
Exemplo:
<?php
foreach( range( 1, 5 ) as $teste );//note o ";"
echo 1;
echo "\n";//apenas uma quebra de linha
foreach( range( 1, 5 ) as $teste )
echo 2;
Resultado:
1
22222
Em ambas as vezes ele fez a volta 5 vezes, mas apenas na segunda ele executou o echo em todas as voltas. Sacou?
2 - Isso aqui:
$valor_subtotal_venda = '0';
Jamais deveria estar imediatamente antes da soma ("+="), pois significa que você sempre estará somando o valor à 0.
Isso deve estar antes do **foreach** apenas para definir a variável com 0 como valor inicial.
com certeza, estava somando sempre o valor a zero, essa variável fora do foreach e resolveu o problema simples...
>
8 horas atrás, joaovictorv disse:
foreach( range( 1, 5 ) as $teste );//note o ";"foreach( range( 1, 5 ) as $teste )
1
22222
Em ambas as vezes ele fez a volta 5 vezes, mas apenas na segunda ele executou o echo em todas as voltas. Sacou?
2 - Isso aqui: