2016-03-06 63 views
0

我正在使用$_SESSION制作商店购物车,我的问题是数组中的第一个数据正在被新的数据覆盖,你能帮助我吗?使用&_SEESION和多维数组的商店购物车

这里是我的代码:

session_start(); 
    $_SESSION['cart']= array(); 
    if(isset($_POST['addtocart'])){ 
       $newproduct= array(
       'code' => $_SESSION['code'], 
       'color' => $_POST['color'], 
       'size' =>$_POST['size'], 
       'quantity' => 1); 
       $_SESSION['cart'][]= $newproduct; 

    } 

检索值:

session_start(); 
foreach ($_SESSION['cart'] AS $item) 
{ 
echo 'code: ' . $item['code'] . '<br />'; 
echo 'color: ' . $item['color']; 
} 

回答

1

您重新声明购物车会话变量EAH时间

$_SESSION['cart']= array(); 

也许你应该试试:

if(!isset($_SESSION['cart'])) $_SESSION['cart']= array(); 

即:

<?php 

    session_start(); 
    if(!isset($_SESSION['cart'])) $_SESSION['cart']= array(); 

    if(isset($_POST['addtocart'], $_POST['color'],$_POST['size'],$_SESSION['code'])){ 
     $newproduct=array(
      'code'  => $_SESSION['code'], 
      'color'  => $_POST['color'], 
      'size'  => $_POST['size'], 
      'quantity' => 1 
     ); 
     $_SESSION['cart'][]= $newproduct; 
    } 

?> 
+0

我应该在哪里把这个线以下,如果(isset($ _ POST [ 'addtocart']? –

+0

用第二行替换现有的行'$ _SESSION ['cart'] = array();'session_start()'下面的''。问题是,每次页面加载会话变量'购物车'重新宣布为空阵列 – RamRaider

+0

它的工作原理,但我循环4次即使你只我添加到产品 –

相关问题