PHP数组问题

时间:2011-07-31 18:07:06

标签: php arrays multidimensional-array shopping-cart

我正在为朋友构建一个简单的购物车,并在会话中使用数组来存储它。

要将商品添加到购物车,我有此代码

$next_item = sizeof($_SESSION['cart']) +1;
$_SESSION['cart'][$next_item] = array(item => $product_id, option => $option, qty => 1);

如果有人添加另一个相同的项目或更新购物车,我在如何更新此数组中的项目数量方面遇到了什么困难。谁能指出我正确的方向?感谢

5 个答案:

答案 0 :(得分:2)

这样的东西
foreach($_SESSION['cart'] as $key => $value) {

    if ($_SESSION['cart'][$key]['item'] == $product_id) {

        $_SESSION['cart'][$key]['qty'] += $qty_to_add;
    }
}

我会更改数组的结构。

而不是

$_SESSION['cart'] = array(
    1 => array(
        'item' => 1,
        'option' => 1,
        'qty' => 1),
    2 => array(
        'item' => 2,
        'option' => 1,
        'qty' => 1),
    3 => array(
        'item' => 3,
        'option' => 1,
        'qty' => 1)
);

使用

$_SESSION['cart'] = array(
    1 => array(
        'option' => 1,
        'qty' => 1),
    2 => array(
        'option' => 1,
        'qty' => 1),
    3 => array(
        'option' => 1,
        'qty' => 1)
);

密钥是产品ID的位置。它将使参考项更容易,您可以在一行中更新数量

$_SESSION['cart'][$product_id]['qty'] += $qty_to_add;

答案 1 :(得分:1)

如果订单不重要,您可以将产品存储在关联数组中。

if (isset($_SESSION['cart'][$product_id])) {
    // set qty of $_SESSION['cart'][$product_id] + 1
} else {
    // create $_SESSION['cart'][$product_id] with qty of 1
}

答案 2 :(得分:1)

首先,您不需要计算数组大小:

$_SESSION['cart'][] = array(...);

其次,我会使用$product_id作为数组键。这样,搜索很简单:

if( isset($_SESSION['cart'][$product_id]) ){
    $_SESSION['cart'][$product_id]['qty']++;
}else{
    $_SESSION['cart'][$product_id] = array(
        'option' => $option,
        'qty' => 1,
    );
}

答案 3 :(得分:1)

我不能说你为它选择了一个好的结构。如何对$ product_id进行索引呢?这样,您就可以随时知道购物车中是否已有特定商品:

<?php
     if( isset($_SESSION['cart'][$product_id]) ) {
        $_SESSION['cart'][$product_id]['qty'] += $new_qty;
     } else {
        $_SESSION['cart'][$product_id] = array(item => $product_id, option => $option, qty => 1);
     }
 ?>

答案 4 :(得分:1)

要向购物车添加内容,只需使用此功能(假设产品ID是唯一的):

$_SESSION['cart'][$product_id] = array('item' => $product_id, 'option' => $option, 'qty' => 1);

要将任何给定产品ID的数量设置为5,请使用:

$_SESSION['cart'][$product_id]['qty'] = 5;

要将产品的数量增加3,请使用:

$_SESSION['cart'][$product_id]['qty'] += 3;