0

我正在使用会话来填充一个简单的购物车,但是,itemAmount如果.item_idsession['cart']

我一直试图在这里增加:$itemAmount = $eachItem['itemAmount'];但是,不能让它工作。

这就是我目前所拥有的;

更新; 具有更好命名的代码,我仍然需要帮助来增加cart_item_amount,目前它每次都会创建一个新项目而不是增加cart_item_amount。

<?php
if (!isset($_SESSION)) {
  session_start();
}
// create the cart session
if(!isset($_SESSION['cart'])) {
    $_SESSION['cart'] = array();
}
?>
<?php
// if all posts are fine
if(isset($_POST['item_id'])) {

    // set post values
    $post_item_id = $_POST['item_id'];
    $post_item_name = $_POST['item_name'];
    $post_options = $_POST['item_options'];
    $post_item_extras = $_POST['item_extras'];

    // set initial item amount
    $item_total = 1;

    foreach($_SESSION['cart'] as $key => $value) {

        if($value['cart_item_id'] == $post_item_id) {

            $value['cart_item_amount']++;
            $item_total = $value['cart_item_amount'];

        }else{

        }
    }
    // if option selected
    if(isset($post_options)) {

        // split to get two separate values
        list($post_item_cost, $post_option_name) = explode("-", $post_options, 2);

    }

    // loop through extras          
    if(isset($post_item_extras)) {

        foreach($post_item_extras as $key => $value) {

            // split to get two separate values
            list($post_extra_cost, $post_extra_name) = explode("-", $value, 2);

            // create extras array
            $item_extras[] = array(
                'cart_extra_cost' => $post_extra_cost,
                'cart_extra_name' => $post_extra_name
            );

        }
    }

    // add each item to an array
    $cart_row = array(
        'cart_item_id' => $post_item_id,
        'cart_item_name' => $post_item_name,
        'cart_option_name' => $post_option_name,
        'cart_item_cost' => $post_item_cost,
        'cart_item_amount' => $item_total,
        // add the extras array
        'cart_item_extras' => $item_extras 
    );

        // add new row to the session Cart
        $_SESSION['cart'][] = $cart_row;
}
?>

Array
(
    [cart] => Array
        (
            [0] => Array
                (
                    [cart_item_id] => 76
                    [cart_item_name] => Cheese Burger
                    [cart_option_name] => Small
                    [cart_item_cost] => 1.00
                    [cart_item_amount] => 1
                    [cart_item_extras] => 
                )

            [1] => Array
                (
                    [cart_item_id] => 76
                    [cart_item_name] => Cheese Burger
                    [cart_option_name] => Small
                    [cart_item_cost] => 1.00
                    [cart_item_amount] => 2
                    [cart_item_extras] => 
                )

            [2] => Array
                (
                    [cart_item_id] => 76
                    [cart_item_name] => Cheese Burger
                    [cart_option_name] => Small
                    [cart_item_cost] => 1.00
                    [cart_item_amount] => 3
                    [cart_item_extras] => 
                )

        )

)
4

2 回答 2

1
if($eachItem['itemID'] = $_POST['item_id']) {

= 不是比较运算符,请参阅 http://php.net/manual/en/language.operators.comparison.php

应该

if($eachItem['itemID'] == $_POST['item_id']) {
于 2013-04-06T10:40:53.877 回答
0

简单地使用它就可以了;

foreach($_SESSION['cart'] as $key => $value) {

    if($value['cart_item_id'] == $post_item_id) {

         $_SESSION['cart'][$key]['cart_item_amount']++;

         return false;

}
于 2013-04-07T08:06:01.930 回答