我一直收到此错误,即使我查看购物车时它列出了商品和价格,然后计算总价并以正确的价值返回。我不确定错误是什么,因为它会正确列出产品标题及其价格。我知道理解为什么它是一个非数字值,因为价格被列出并且总价格相应地加起来。
<!DOCTYPE html>
<html>
<head>
<title>Cart</title>
</head>
<body>
<?php
session_start();
require_once('connect.php');
include('cartHead.php');
include('cartNav.php');
?>
<div class="container">
<?php
$items = $_SESSION['cart'];
$cartitems = explode(",", $items);
?>
<div class="row">
<table class="table">
<tr>
<th>Item</th>
<th>Item Name</th>
<th>Price</th>
</tr>
<?php
$total = '';
$i=1;
foreach ($cartitems as $key=>$id) {
$sql = "SELECT * FROM products WHERE id = $id";
$res=mysqli_query($connect, $sql);
$r = mysqli_fetch_assoc($res);
?>
<tr>
<td><?php echo $i; ?></td>
<td><a href="delCart.php?remove=<?php echo $key; ?
>">Remove</a> <?php echo $r['title']; ?></td>
<td>$<?php echo $r['price']; ?></td>
</tr>
<?php
$total = $total + $r['price'];
$i++;
}
?>
<tr>
<td><strong>Total Price</strong></td>
<td><strong>$<?php echo $total; ?></strong></td>
<td><a href="#" class="btn btn-info">Checkout</a></td>
</tr>
</table>
</div>
</div>
<?php include('cartFooter.php'); ?>
</body>
</html>
答案 0 :(得分:1)
您正在将字符串初始化为字符串,但您的操作会将其视为数字。您可以按如下方式初始化总计:
$total = 0;
或者您可以将总数转换为int(或您选择的任何类型)
$total = (int)$total + 5;
要验证我的答案,在进行上述修改之前,请在实例化总计后添加以下行。
var_dump($total)
这将给出参数的类型和值。虽然PHP是一种松散类型的语言,但我会非常小心地隐式地将变量从非数字转换为数字(反之亦然)。如果字符串表示的int值大于PHP_INT_MAX,则在将字符串转换为int时会出现一个这样的问题。在代码中代表钱是我强烈建议你研究的另一个话题。