[英]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.