php 数组和数组总和未返回正确的值

php array and array sum not returning right value

当我在我的网页上调用这个函数时,它应该回显出您购物车中产品的总价值,但它只回显出具有最高产品 ID 的产品的价值。而不是这些值的总和。

function total_price() {

    $total = 0;
    global $link;
    $ip = getIp();
    $sel_price= "select * from cart where ip_add='$ip'";
    $run_price= mysqli_query($link, $sel_price);

    while($p_price=mysqli_fetch_array($run_price))  {
        $pro_id = $p_price['id'];
        $pro_price = "select * from products where id='$pro_id'";
        $run_pro_price = mysqli_query($link, $pro_price);
        while ($pp_price = mysqli_fetch_array($run_pro_price)){
            $product_price = array($pp_price['prijs']);
            $values = array_sum($product_price);
            $total = number_format((float)$values, 2, ',', '');  
        }
    }
    echo "€ " .$total;

}
$total += number_format((float)$values, 2, ',', '');  

应该可以

<?php
function total_price() {
    $values = 0;
    $total = 0;
    global $link;
    $ip = getIp();
    $sel_price= "select * from cart where ip_add='$ip'";
    $run_price= mysqli_query($link, $sel_price);

    while($p_price=mysqli_fetch_array($run_price))  {
        $pro_id = $p_price['id'];
        $pro_price = "select * from products where id='$pro_id'";
        $run_pro_price = mysqli_query($link, $pro_price);
        while ($pp_price = mysqli_fetch_array($run_pro_price)){
            //$product_price = array($pp_price['prijs']);
            //this will cumulate sum 
            $values += $pp_price['prijs'];
            //$total = number_format((float)$values, 2, ',', '');  
        }
    }
    //this will format result
    $total = number_format((float)$values, 2, ',', '');
    echo "&euro; " .$total;

}

顺便说一句,你为什么不尝试使用 JOIN 语句???

没有理由使用 array_sum。具有一个元素的数组的总和就是该元素的值。如果您将每个价格推入数组,然后在循环结束时计算总和,您将使用 array_sum。但是你可以每次通过循环添加到总值,所以没有必要这样做。

    while ($pp_price = mysqli_fetch_array($run_pro_price)){
        $values += $pp_price['prijs'];
    }
}
$total = number_format((float)$values, 2, ',', '');  
echo "&euro;" . $total;

您也可以在一个查询中执行所有操作:

$sel_total = "SELECT SUM(prijs) AS total
                FROM cart 
                JOIN products ON cart.id = product.id
                WHERE ip_add = '$ip'";
$res = mysqli_query($sel_total);
$row = mysqli_fetch_assoc($res);
$total = number_format($row['total'], 2, ',', '');
echo "&euro;" . $total;