-1

我正在执行以下操作,但它不起作用。无论我添加多少,它在数组中只有 1 个项目

谁能告诉我我做错了什么

session_start();

$pid = mysql_real_escape_string(trim($_GET["pid"]));
$price = mysql_real_escape_string(trim($_GET["price"]));
$quantity = mysql_real_escape_string(trim($_GET["quantity"]));

if (!isset($_SESSION['cart'])) {
    $_SESSION['cart'] = array();

    $_SESSION['cart']['pid'] = $pid;
    $_SESSION['cart']['total_price'] = $price;
    $_SESSION['cart']['total_items'] = $quantity;

}else{
    $_SESSION['cart']['pid'] = $pid;
    $_SESSION['total_price'] += $price;
    $_SESSION['total_items']  += $quantity;
}
4

4 回答 4

1

看起来您只是在重置数组中的值。每次设置 $_SESSION['cart']['pid'] 时,您都在重写最后一个值。但是,您的 total_price 和 total_quantity 可能正确递增,对吗?

改为使用$_SESSION['cart']['pid'][] = $pid;。您需要一个“pid”数组,以便您可以拥有多个项目。[] 运算符告诉 php 将该值视为数组并将新值推送到数组的末尾。

编辑:您的初始化if应如下所示,以便您的 ['pid'] 是一个 pid 数组:

$_SESSION['cart'] = array();
$_SESSION['cart']['pid'] = array(); //this might be redundant...but I always initialize my variables
$_SESSION['cart']['pid'][] = $pid;
$_SESSION['cart']['total_price'] = $price;
$_SESSION['cart']['total_items'] = $quantity;

在下else你会得到:

$_SESSION['cart']['pid'][] = $pid;
$_SESSION['cart']['total_price'] += $price;
$_SESSION['cart']['total_items'] += $quantity;

else注意:您在其他答案中提到的 total_price 和 total_items 上忘记了 ['cart'] 。

于 2012-04-25T19:03:18.113 回答
0

看起来您忘记将 ['cart'] 添加到底部的两个 $_SESSION 设置器中:

$_SESSION['total_price'] += $price;
$_SESSION['total_items']  += $quantity;

改成

$_SESSION['cart']['total_price'] += $price;
$_SESSION['cart']['total_items']  += $quantity;
于 2012-04-25T19:00:22.463 回答
0
$_SESSION['cart']['pid'] = $pid; 
$_SESSION['total_price'] += $price; 
$_SESSION['total_items']  += $quantity; 

您忘记了 else 声明中的 ['cart'] .. 应该是:

$_SESSION['cart']['pid'] = $pid; 
$_SESSION['cart']['total_price'] += $price; 
$_SESSION['cart']['total_items']  += $quantity; 
于 2012-04-25T19:01:12.637 回答
0

您在 else 语句的最后一个会话变量中忘记了 ['cart'] 。

有关 php.ini 中数组引用函数的列表,请参阅this

于 2012-04-25T19:02:28.510 回答