Php 理解代码是如何工作的;购物车总数
我刚刚开始学习如何创建购物车 遇到这个例子:Php 理解代码是如何工作的;购物车总数,php,Php,我刚刚开始学习如何创建购物车 遇到这个例子: <?php echo "Shopping cart:\n"; $items = count($_SESSION['cart']); { $total = 0; echo "<table width=\"100%\" cellpadding=\"1\" border=\"1\">\n"; echo "<tr><td>Ite
<?php
echo "Shopping cart:\n";
$items = count($_SESSION['cart']);
{
$total = 0;
echo "<table width=\"100%\" cellpadding=\"1\" border=\"1\">\n";
echo "<tr><td>Item Name</td><td>Quantity</td><td>Total</td></tr>\n";
foreach($_SESSION['cart'] as $itemid => $quantity)
{
$query = "SELECT description, price FROM items WHERE itemid = $itemid";
$result = mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$name = $row['name'];
$price = $row['price'];
$subtotal = $price * $quantity;
$total += $subtotal;
printf("<tr><td>%s</td><td>%s</td><td>$%.2f</td></tr>\n", $name, $quantity, $subtotal);
}
printf("<tr><td colspan=\"2\">Total</td><td>$%.2f</td></tr>\n", $total);
echo "</table>\n";
}
?>
除了“总计或$TOTAL”部分外,代码是有效的,我了解大部分代码:
*$小计=$价格*$数量;
$total+=$subtotal*
正如我所说,它确实有效;如果我在购物车中放置两个项目,例如:5块(数量)的石头,每个5美元,2块鹅卵石,每个10美元,我在相应的表行中得到小计,小部件25美元,小部件20美元。我想
*$SUBTOTAL=$price*$quantity*----对此负责,对吗
我不明白的是它是如何得出总数的(这是正确的——45美元)
代码的哪一部分将各个小计相加(即25美元和20美元)
$total+=$subtotal如何工作
我想了解代码是如何工作/处理的,而不是仅仅因为它工作就接受它
提前谢谢
$total += $subtotal
只是以下的简写:
$total = $total + $subtotal;
因此,要将其应用于代码:
// Start the total at 0
$total = 0;
// For every item in the cart
foreach($_SESSION['cart'] as $itemid => $quantity)
{
// Get the item's price from the database
$price = $row['price'];
// The subtotal is the cost of each item multiplied by how many you're ordering
$subtotal = $price * $quantity;
// Add this subtotal to the running total
$total += $subtotal;
}
+=
运算符获取表达式左侧的值,并添加右侧的值。你可以这样想:
$total = $total + $subtotal;
foreach()
循环遍历所有项目,并在每次迭代中通过将产品单价乘以其数量来计算该产品的总价,该数量临时存储在$subtotal
中,感谢您的快速回复。我想对于我试图理解的问题,一个更好的问题是:代码的哪一部分生成了一个运行总数?正如您所提到的,-$subtotal=$price*$quantity--为每个单独的项目生成小计($25和$20),但是如何(代码的哪一部分执行$25加$20)将这些小计加起来生成$45呢?我在我的帖子中解释了这一点,$total+=$subtotal
行实现了这一点。foreach
循环执行两次,对购物车中的每个项目执行一次。$total
从0开始,然后加上25,再加上20。再次感谢。我想我现在明白了;另一个关键组件是foreach循环。感谢您的回复。我最初并不认为foreach循环会遍历$subtotal/$total部分。现在我明白了。