[英]PHP: access multidimensional session array
我想通过使用多维会话数组来实现购物车,但是不知道如何访问它们。 例如,
第1行:pname“ x”大小“ m”数量“ 2”
我如何将其作为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.