簡體   English   中英

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;

}

沒有理由使用array_sum 具有一個元素的數組的總和就是該元素的值。 如果將每個價格推到數組上,然后在循環末尾計算總和,則可以使用array_sum 但是您可以在每次循環中將總值相加,因此不需要這樣做。

    while ($pp_price = mysqli_fetch_array($run_pro_price)){
        $values += $pp_price['prijs'];
    }
}
$total = number_format((float)$values, 2, ',', '');  
echo "€" . $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 "€" . $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語句呢???

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM