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 "€ " .$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 "€" . $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;
当我在我的网页上调用这个函数时,它应该回显出您购物车中产品的总价值,但它只回显出具有最高产品 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 "€ " .$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 "€" . $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;