系统购物车上的php逻辑和会话值管理

系统购物车上的php逻辑和会话值管理,php,session,logic,shopping-cart,Php,Session,Logic,Shopping Cart,这是一个关于php内置电子商务购物车逻辑的问题: 我将购物车中的一个项目与php中的一个会话一起保存,该会话由一个组合字符串命名,其中唯一键由产品id给出: $this->session->data['quote_total_'.$product_id]; 问题是,当我在购物车中添加相同的产品,但价格不同时-价格由系统在错误、选项和数量发生变化时自动生成- 事实上,购物车会话的第一个值即第一个产品价格的值被新值覆盖。对于您来说,避免这种覆盖的最佳方法是什么 我正在考虑在会话名称中附

这是一个关于php内置电子商务购物车逻辑的问题:

我将购物车中的一个项目与php中的一个会话一起保存,该会话由一个组合字符串命名,其中唯一键由产品id给出:

$this->session->data['quote_total_'.$product_id];
问题是,当我在购物车中添加相同的产品,但价格不同时-价格由系统在错误、选项和数量发生变化时自动生成- 事实上,购物车会话的第一个值即第一个产品价格的值被新值覆盖。对于您来说,避免这种覆盖的最佳方法是什么


我正在考虑在会话名称中附加一个唯一的值,但我不知道是哪一个…

如何将此变量设置为数组而不是原始数据类型?

与其将产品ID用作键,不如让该键自动创建,并随每个产品一起递增

// add a product - new product will always be added
$this->session->data[] = array(
    'product_id' => 123,
    'qty' => 1,
    'name' => 'Product Name',
    'price' => 10
);


// you can iterate over the products like
foreach($this->session->data as $product)
{
    print_r($product);
}

使用会话变量中的产品id追加价格,以唯一标识具有不同价格的每个产品。还可以使用数组存储多个产品。

创建多维数组,例如

$data = array([0]=>array(
    'product_id' => 123,
    'qty' => 1,
    'name' => 'Product Name',
    'price' => 10),
    [1]=>array(
    'product_id' => 123,
    'qty' => 2,
    'name' => 'Product Name',
    'price' => 20)
);

我以前尝试过,但在添加产品时,我无法从上一封邮件中恢复价格,您有价格吗?对于将价格像id一样添加到会话名称中,我需要更改整数中的浮点数,只需将逗号替换为零,然后,对于在购物车方法getProducts()中检索价格我需要知道价格,这样我就不能工作了,我想。。。我说的对吗?相反,您可以使用产品id和价格作为字符串,并将它们关联起来,以唯一地标识具有不同价格的每个产品。产品id=123,价格为45.2美元,然后$this->session->data['123.'45.2'];我不明白它不会起作用,这是一个页面,你可以做我试图解释的事情,填写表格并单击蓝色按钮“acquista”,然后你可以看到购物车已更新,在更改宽度和高度输入字段[“Base(cm)”;Altezza(cm)]后再次尝试单击蓝色按钮,查看购物车,然后你可以看到发生了什么:有两种产品有不同的选择,但价格相同,最后一种……这不是一个好主意。如果是同一产品,数量必须是3,价格应该是30。