簡體   English   中英

PHP:訪問多維會話數組

[英]PHP: access multidimensional session array

我想通過使用多維會話數組來實現購物車,但是不知道如何訪問它們。 例如,

  • 情況1:用戶在購物車中添加一個名稱為“ x”,尺寸為“ m”的商品。 然后再次添加名稱“ x”和大小“ m”

第1行:pname“ x”大小“ m”數量“ 2”

  • 情況2:當用戶向購物車中添加名稱為“ x”且尺寸為“ m”的商品時。 然后用戶將另一個名稱為“ x”但尺寸為“ s”的商品添加到購物車。

我如何將其作為2階指令處理?

第1行:pname“ x”大小“ m”數量“ 1”
第2行:pname“ x”大小“ s”數量“ 1”

     if (!isset($_SESSION['order'])) {
         $_SESSION['order'] = array();  
     }
     $_SESSION['order'][] = array('id'=>$pID, 'size'=>$size, 'quantity'=>0);

   switch ($action) {
    case "add":
        $_SESSION['order'][]['quantity']++;
    break;

    case "remove":
        unset($_SESSION['order'][][$pID]);
    break;

    case "empty":
        unset($_SESSSION['order']);
    break;
}

每次調用[]時,會話都將獲得一個元素。 添加$pID作為變量ID:

改成:

if (!isset($_SESSION['order'])) {
    $_SESSION['order'] = array();  
}
$_SESSION['order'][$pID.'-'.$size] = array('quantity'=>0);

switch ($action) {
    case "add":
        $_SESSION['order'][$pID.'-'.$size]['quantity']++;
        break;

    case "remove":
        unset($_SESSION['order'][$pID.'-'.$size]);
        break;

    case "empty":
        // unset($_SESSION['cart']);
        unset($_SESSSION['order']);
        break;
}

您以后可以使用$_SESSION['order'][$pID.'-'.$size]訪問該產品$_SESSION['order'][$pID.'-'.$size]

要訪問它們:

foreach($_SESSION['order'] as $key => $one){
    list($pid, $size) = explode('-', $key);
}

我建議您為此使用對象而不是數組。 使用數組會造成某種復雜性,並使代碼的可讀性和復雜性降低。 我建議您使用面向對象的方法。

只需創建兩個類:

    class ShoppingCart {

    private $items;

    public function getItems(){

     return $this->items;
    }

    public function addItem($item){

       $this->items[] = $item;
}


class Item {

private $name;
private $size;

public function getName() { return $this->name;}
public function getSize() { return $this->siez; }
public function setName($name) { $this->name = $name; }
public function setSize($size) { $this->size = $size; }


Now you can add items to the cart like this:

$cart = new ShoppingCart();

$item1 = new Item();
$item1->setName('x');
$item1->setSize('m');

$item2 = new Item();
$item2->setName('x');
$item2->setSize('s');

$cart->addItem($item1);
$cart->addItem($item2);

您是否看到過,此代碼易於閱讀並且易於理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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