簡體   English   中英

如何在購物車中的PHP中具有相同名稱的會話數組變量?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM