【问题标题】:PHP Update Cart ArrayPHP 更新购物车数组
【发布时间】:2014-03-28 11:33:42
【问题描述】:

基本上,我一直在为 Shop 类编写一个 UpdateCart 函数。这个想法是购物车是一个会话数组,将一个项目作为一个新数字添加到一个数组中,如array(1 => array(), 2 = array() 等等。

public function updateCart($ID, $Proc) {
    switch($Proc) {
        case $Proc = "Add" :
            try {
                $item = $this->_db->get("Shop","WHERE $ID = id");
                $this->cartArray[ count($this->cartArray) + 1 ] = array (
                    "ID" => $item['id'],
                    "Name" => $item['name'],
                    "Desc" => $item['desc'],
                    "Price" => $item['price']
                );
                session::put('ShoppingCart', $this->cartArray);
                print_r($_SESSION['ShoppingCart']);
            } catch(Exception $e) {
                die("No Item with That ID Found");
            }
            break;
        case $Proc = "Remove" :
            echo "Item ".$item['ID']." Removed";

            break;
        default:
            echo "Nothing to do";
            break;
    }
}

唯一的问题是它不会添加到数组中,它只是完全替换,我正在绞尽脑汁找出原因。

【问题讨论】:

    标签: php arrays cart shopping


    【解决方案1】:

    每次调用 put 时都会覆盖数组,请尝试 push。

    public function updateCart($ID, $Proc)
    {
        switch ($Proc) {
            case $Proc = "Add" :
                try {
                    $item = $this->_db->get("Shop", "WHERE $ID = id");
                    $this->cartArray[] = array(
                        "ID" => $item['id'],
                        "Name" => $item['name'],
                        "Desc" => $item['desc'],
                        "Price" => $item['price']
                    );
                    session::push('ShoppingCart', $this->cartArray);
                    print_r($_SESSION['ShoppingCart']);
                } catch (Exception $e) {
                    die("No Item with That ID Found");
                }
                break;
            case $Proc = "Remove" :
                echo "Item " . $item['ID'] . " Removed";
                break;
            default:
                echo "Nothing to do";
        }
    }
    

    如果这也不起作用,请在使用 put 时尝试合并它

    public function updateCart($ID, $Proc)
    {
        switch ($Proc) {
            case $Proc = "Add" :
                try {
                    $item = $this->_db->get("Shop", "WHERE $ID = id");
                    $this->cartArray[] = array(
                        "ID" => $item['id'],
                        "Name" => $item['name'],
                        "Desc" => $item['desc'],
                        "Price" => $item['price']
                    );
                    session::put('ShoppingCart', array_merge(session::get('ShoppingCart'), $this->cartArray));
                    print_r($_SESSION['ShoppingCart']);
                } catch (Exception $e) {
                    die("No Item with That ID Found");
                }
                break;
            case $Proc = "Remove" :
                echo "Item " . $item['ID'] . " Removed";
                break;
            default:
                echo "Nothing to do";
        }
    }
    

    【讨论】:

    • 我使用了第二种方法,效果非常好,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    相关资源
    最近更新 更多