数组仅显示最后$ _post值

时间:2014-04-22 13:57:53

标签: php arrays session

我想创建简单的购物车进行学习。问题是我尝试了很多,但没有一个样本无法添加到我现有的项目中。

让我们看一些代码:

的index.php

<?php 
session_start();
//shopping cart
if(isset($_POST['tocart']))
{
$pid = intval($_POST['product_id']);
$cart = new Cart();
$cart -> AddToCart($pid);
}
?>
<form action="index.php" method="post" name="form1"> 
              <input type="hidden" name="product_id" value="12" />
              <input type="hidden" name="tocart" value="tocart" />
              <input type="hidden" name="quantity" value="1" />
              <button type="submit" value="Submit" class="btn btn-primary">Add the product</button> </form> 

model.php

class Cart
{
    function AddToCart($pid)
     {

     if(isset($_SESSION['prod_count']))
         {
           $_SESSION['prod_count']++;
           $incart=$_SESSION['prod_count'];
           $_SESSION[$incart]['product_id'] = $pid;
         }
         else 
         {
           $_SESSION['prod_count'] = 0;
           $incart=$_SESSION['prod_count'];
           $_SESSION[$incart]['product_id'] = $pid;
         }
      }

}

Cart.php

<?php 
var_dump($_SESSION);
?>

当我添加4个产品时,它显示:

数组(2){[&#34; prod_count&#34;] =&gt; &amp; int(4)[4] =&gt; array(1){[&#34; product_id&#34;] =&gt; int(12)}}

不应该是这样的:

Array(2) { ["prod_count"]=> &int(1) [1]=> array(1) { ["product_id"]=> int(15)}
           ["prod_count"]=> &int(2) [2]=> array(1) { ["product_id"]=> int(14)}
           ["prod_count"]=> &int(3) [3]=> array(1) { ["product_id"]=> int(17)}
           ["prod_count"]=> &int(4) [4]=> array(1) { ["product_id"]=> int(12) } }

1 个答案:

答案 0 :(得分:0)

请改为尝试:

$_SESSION[]['product_id'] = $pid;

通过只有[]它将创建一个新的数组实例。

========== 编辑以回应提交。

怎么样尝试;

$_SESSION['products'][]['product_id'] = $pid;

因此,您要在子数组中定义它,而不是直接在顶级会话对象上定义它。