我想创建简单的购物车进行学习。问题是我尝试了很多,但没有一个样本无法添加到我现有的项目中。
让我们看一些代码:
的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) } }
答案 0 :(得分:0)
请改为尝试:
$_SESSION[]['product_id'] = $pid;
通过只有[]它将创建一个新的数组实例。
========== 编辑以回应提交。
怎么样尝试;
$_SESSION['products'][]['product_id'] = $pid;
因此,您要在子数组中定义它,而不是直接在顶级会话对象上定义它。