0

多次元セッション配列を使用してショッピングカートを実装したいのですが、それらにアクセスする方法がわかりません。例えば、

  • case1:ユーザーは、名前が「x」、サイズが「m」のアイテムを1つカートに追加します。次に、名前「x」とサイズ「m」で再度追加します

line1:pname "x" size "m" amount "2"

  • case2:ユーザーが「x」という名前と「m」のサイズでカートに1つのアイテムを追加した場合。次に、ユーザーは「x」という名前でサイズが「s」の別のアイテムをカートに追加します。

どうすれば2行の注文として操作できますか?

line1:pname "x" size "m" amount "1"
line2:pname "x" size "s" amount "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;
}
4

2 に答える 2

1

を呼び出すたびに、セッションは要素を取得します[]$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]

それらにアクセスするには:

foreach($_SESSION['order'] as $key => $one){
    list($pid, $size) = explode('-', $key);
}
于 2012-10-01T14:52:32.817 に答える
0

これには、配列の代わりにオブジェクトを使用することをお勧めします。配列を使用すると、一種の複雑さが生じ、コードが読みにくくなり、より複雑になります。オブジェクト指向のアプローチを使用することをお勧めします。

2 つのクラスを作成するだけです。

    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);

ご覧のとおり、このコードは読みやすく、簡単に理解できます。

于 2012-10-01T14:59:02.647 に答える