使用PHP在$ _SESSION变量中存储多个值

时间:2012-01-22 20:37:37

标签: php session shopping-cart

我正在创建一个有购物车的网站。我不需要任何特殊功能,因此我自己创建购物车而不是集成任何现成的购物车。我的产品在数据库中没有预定义的价格。价格是根据用户在产品页面上输入的值动态生成的。因此,用户选择一些规格,输入数量,我得到以下值:

物品编号
数量
总价

我需要将这些值存储在$ _SESSION变量中,然后在需要时将其循环以获取结果并将其打印在购物车中。问题是有很多产品,我需要为所选产品特别存储所有这些值(数量,总价)。也就是说,如何在$ _SESSION变量中存储项目ID,数量和总价格并将这些值相互关联?

感谢您的帮助。

编辑:我的代码实现迈克尔的建议:

$itemid = $db->escape($_POST['productid']);
    $itemquantity = $db->escape($_POST['itemquantity']);
    $totalprice = $db->escape($_POST['totalprice']);

    $_SESSION['items'] = array();

    $_SESSION['items'][$itemid] = array('Quantity' => $itemquantity, 'Total' => $totalprice);

    var_dump($_SESSION);

1 个答案:

答案 0 :(得分:11)

将项目ID用作数组键,其中包含其他项目的数组:

// Initialize the session
session_start();

// Parent array of all items, initialized if not already...
if (!isset($_SESSION['items']) {
  $_SESSION['items'] = array();
}

// Add items based on item ID
$_SESSION['items'][$itemID] = array('Quantity' => $quantity, 'Total' => $total);
// Another item...
$_SESSION['items'][$another_itemID] = array('Quantity' => $another_quantity, 'Total' => $another_total);
// etc...

并将其视为:

// For item 12345's quantity
echo $_SESSION['items'][12345]['Quantity'];

// Add 1 to quantity for item 54321
$_SESSION['items'][54321]['Quantity']++;