[英]How to have session array variables in PHP with same name in shopping cart?
我正在使用会话变量在PHP中创建一个购物车,以便在签出之前存储用户的产品选择。 在大多数情况下,它是有效的。 问题是,如果用户选择说“小”号的“红色”衬衫,则会将其添加到会话变量中,如下所示:
'products' =>
array(size=1)
'code' =>
array(size=5)
'product_size' => string 'Small'
'quantity' => string '1'
'product_code' => string 'sku'
'name' => string 'shirt red'
'price' => string '25'
但是,如果用户选择大小不同的同一项目,则会用相同的代码覆盖先前的会话变量。
我如何做到这一点,以便用户可以以不同的大小获得相同的项目,而不会覆盖先前的会话变量?
我会这样建造
['products' => [
$sku => [ //the actual sku value, not literally sku
'price' => '25', //if it's common ( total = price x total_qty ), if not put a total here
//'total_price' => 70
'total_qty' => 3,
'name' => string 'shirt red' //if its common
'items' => [
0 => [
'size' => 'Small'
'quantity' => '1'
//'price' => 20
], 1 => [
'size' => 'Medium'
'quantity' => '2'
//'price' => '25'
]
] //end items
]//end sku
]
基本上,嵌套一个项目时,每个项目的内容都不相同。 如果价格在尺寸上不常见,我会以注释形式列出价格。
如果这是主要区别,您也可以按大小键入项目
.....
'items' => [
'Small' => [
'quantity' => '1'
//'price' => 20
], 'Medium' => [
'quantity' => '2'
//'price' => '25'
]
]
这不太“灵活”,但更容易减少重复项。 items
数组键比另一个嵌套的“ size”键更易于检查。
这应该给您一个想法,实际的结构取决于您和您的用例,以允许您最轻松地访问项目的方式构建它,但仍然足够灵活以容纳您的所有产品。
最后一个例子,如果大小和数量是唯一不同的东西,那么您甚至可以消除嵌套数组。
.....
'items' => [
'Small' => '1','Medium' => '2'
]
同样,您的数组在您的问题中也有明显的错误。
product_color' => string 'Small'
将产品ID保留为键,并在其中保留具有名称,sku和类型等属性。
[
'products' => [
'pid123' => [
[
'name' => 'abc',
'sku' => 'sku-abc',
'types' => [
[
'colour' => 'red',
'size' => '42',
'qty' => 1
],
[
'colour' => 'red',
'size' => '40',
'qty' => 2
]
]
]
],
'pid789' => [
[
'name' => 'xyz',
'sku' => 'sku-xyz',
'types' => [
[
'colour' => 'red',
'size' => '42',
'qty' => 1
],
[
'colour' => 'red',
'size' => '40',
'qty' => 2
]
]
]
]
]];
类型列表将包含各种尺寸,颜色和数量信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.